You are on page 1of 13

Exercícios em JAVA: Package#2

Arrays

1. Re-escreva o programa apresentado na Package #1 que devolve o nº de dias de


cada mês, utilizando para o efeito um array. Este programa deverá ler um n.º
correspondente a um mês do ano e mostrar o n.º de dias desse mês.
Dias_mes.java
class Dias_mes {
public static void main(String args[]) {
int dias_mes[];
int mes;
dias_mes = new int[12];
dias_mes [0] = 31;
dias_mes[1] = 28;
dias_mes[2] = 31;
dias_mes[3] = 30;
dias_mes[4] = 31;
dias_mes[5] = 30;
dias_mes[6] = 31;
dias_mes[7] = 31;
dias_mes[8] = 30;
dias_mes[9] = 31;
dias_mes[10] = 30;
dias_mes[11] = 31;
System.out.print("Introduza o mês (1-12): ");
mes = Keyboard.readInt();
System.out.println("Esse mês tem " + dias_mes[mes - 1] + " dias.");
}
}

Solução alternativa
Dias_mes2.java
class Dias_mes_2 {
public static void main(String args[]) {
int mes;
int dias_mes[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
System.out.print("Introduza o mês (1-12): ");
mes = Keyboard.readInt();
System.out.println("Esse mês tem " + dias_mes[mes - 1] + " dias.");
}
}
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

2. Escreva um programa que apresente os nomes de todos os meses do ano, a


estação do ano a que pertencem e o n.º de dias de cada mês, usando arrays.
Meses.java
class Meses {
static String meses[] = {
"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
"Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
};
static int diasmes[] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
static String primavera = "primavera";
static String verao = "verão";
static String outono = "outono";
static String inverno = "inverno";
static String estacoes[] = { inverno, inverno, primavera, primavera, primavera,
verao, verao, verao, outono, outono,
outono, inverno};

public static void main(String args[]) {


for (int mes = 0; mes < 12; mes++) {
System.out.println(meses[mes] + " é um mês do(a)" +
estacoes[mes] + " com " +
diasmes[mes] + " dias.");
}
}
}

Pág. 2 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

3. Escreva um programa que determine se dois arrays unidimensionais de números


inteiros são iguais.

Iguais.java
class Iguais {
public static void main(String Args[]) {

int vec1[]={0,1,2,3,4};
int vec2[]={0,2,2,3,4};

boolean diferentes=false;

for(int i=0;i<vec1.length && !diferentes;i++) //Termina quando encontra o primeiro valor


diferente

if (vec1[i]!=vec2[i])
diferentes = true;

if (diferentes)
System.out.println("Os arrays apresentados são diferentes");

else
System.out.println("Os arrays apresentados são iguais");

}
}

Pág. 3 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

4. Escreva um programa que leia, para um array, um conjunto de 10 valores e os


apresente por ordem inversa.

InverteNumeros.java
class InvertNumeros{
public static void main (String[] args){
double[] numeros = new double[10];

System.out.println ("Dimensão deste Array: " + numeros.length);

for (int index = 0; index < numeros.length; index++)


{
System.out.print ("Introduza o número " + (index+1) + ": ");
numeros[index] = Keyboard.readDouble();
}

System.out.println ("Os números por Ordem Inversa:");

for (int index = numeros.length-1; index >= 0; index--)


System.out.print (numeros[index] + " ");

System.out.println ();
}
}

Pág. 4 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

5. Crie um programa que calcule e apresente o produto escalar de duas matrizes


unidimensionais (vectores) de inteiros, pedidos ao utilizador.

ProdutoVec.java
class ProdutoVec {
public static void main(String Args[]) {
System.out.print("Introduza a dimensão dos vectores de elementos: ");
int dim = Keyboard.readInt();

int vector1[] = new int[dim];


int vector2[] = new int[dim];
int i, prod=0;
System.out.println("Introduza a dimensão dos vectores de " + dim +"
elementos");
System.out.println("Primeiro, introduza um vector de " + dim +" elementos");
for (i = 0; i < dim; i++) {
System.out.print("Elemento "+ (i+1) + ": ");
vector1[i] = Keyboard.readInt();
}
System.out.println("Agora, introduza um outro vector de " + dim + " elementos");
for (i = 0; i < dim; i++) {
System.out.print("Elemento "+ (i+1) + ": ");
vector2[i] = Keyboard.readInt();
}
for (i = 0; i < dim; i++)
prod += vector1[i] * vector2[i];
System.out.println("O produto é dos vectores é " + prod);
}
}

Pág. 5 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

6. Escreva um programa que calcule e apresente a frequência de saída de cada


face de um dado, lançado 6000 vezes consecutivas. A frequência de saída de
cada face deve ser armazenada num array e apresentada no final.

LancaDado.java
class LancaDado {
public static void main(String Args[]) {
int face;
int frequencia[] = new int[6];
for (int rola = 1; rola <=6000; rola ++){
face = 1+(int)(Math.random()*6);
++frequencia[face-1];
}
System.out.println("Face Frequência");
System.out.println("--------------------");
for (int i = 0; i <6; i ++)
System.out.println(" " + (i+1) + " " + frequencia[i]);
System.out.println("--------------------");
}
}

Pág. 6 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

7. Pretende-se um programa que leia e armazene os valores respeitantes aos


lucros obtidos em cada mês do ano por uma empresa, num conjunto de 5 lojas
distintas. Este programa deverá, no final, apresentar o valor total de lucros da
empresa, bem como o valor máximo obtido e em que loja este valor foi obtido.

Lucros.java
class Lucros {
public static void main(String Args[]) {
double[][] lucro = new double[5][12];
double maxlucro;
int melhorLoja, loja, mes;
double total = 0.0;
//Lê os valores para o array
for (loja = 0; loja < 5; loja++)
for (mes = 0; mes < 12; mes++) {
System.out.print("Introduza o valor do lucro em 2001 na loja " + (loja+1)
+ " no mes " + (mes+1) + ": ");
lucro[loja][mes] = Keyboard.readDouble();
}
maxlucro = 0;
melhorLoja = 0;

// Procura a loja com o melhor lucro


for (loja = 0; loja < 5; loja++)
for (mes = 0; mes < 12; mes++) {
if (maxlucro < lucro[loja][mes]) {
maxlucro = lucro[loja][mes];
melhorLoja = loja;
}
total += lucro[loja][mes];
}
System.out.println("Total de Lucros: " + total);
System.out.println("Máximo de lucros obtido na loja: " + (melhorLoja+1) + " no valor de: "
+ maxlucro);
}
}

Pág. 7 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

8. Crie um Programa que implemente o Triângulo de Pascal, utilizando arrays.


Neste Triângulo, cada elemento é igual à soma dos elementos que lhe ficam
imediatamente acima, caso o elemento não seja nem o primeiro nem o último da
sua linha, e é 1 no caso contrário. A dimensão do Triângulo deve ser
especificada pelo utilizador.

Exemplo de um Triângulo de Pascal de tamanho 6:

0 1 2 3 4 5
0 1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1

TPascal.java
class TPascal {
public static void main(String Args[]) {
System.out.print("Introduza a dimensão do Triângulo: " );
int dimensao = Keyboard.readInt();
int [][] matriz = new int [dimensao][dimensao];
for (int i = 0;i < dimensao; i++)
for (int j = 0; j <= i;j++)
if ((j==0) || (j == i))
matriz[i][j] = 1;
else
matriz[i][j] = matriz[i-1][j-1] + matriz[i-1][j];
for (int i = 0;i < dimensao; i++) {
for (int j = 0; j <= i;j++)
System.out.print(matriz[i][j] + " " );
System.out.println();
}
}
}

Pág. 8 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

9. Uma forma simples e eficiente de calcular todos os números primos até um certo
valor n é o método da Peneira de Eratosthenes. O processo é simples:
escrevem-se todos os valores entre 2 e n (limite máximo). Em seguida, faz-se
um círculo em volta do 2, marcando como primo e riscam-se todos os seus
múltiplos. Continua-se a fazer círculos em volta do menor inteiro que se
encontra, eliminando todos os seus múltiplos. Quando não restarem números
sem terem círculos à volta ou traços por cima, os números com círculos à volta
representam todos os primos até n. A figura seguinte apresenta o método para
n=40.

Escreva um programa que implemente a Peneira de Eratosthenes. Deverá ser


pedido ao utilizador um número inteiro correspondente ao limite máximo. Crie
um array com todos os inteiros de 2 a n e elimine os valores não-primos. No
final, mostre o array de inteiros contendo todos os números primos encontrados.

Pág. 9 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

Nprimos.java
class Nprimos {

public static void main(String Args[]) {

System.out.print("Introduza o limite máximo: " );


int n = Keyboard.readInt();
int[] lista = new int [n-1]; //Lista inicial
int conta_primos = 0; //Contador de números primos

//Preencher lista de 2 até n


for (int i=2;i<=n;i++)
lista[i-2]=i;

//Eliminar números não primos


for (int i=0;i<lista.length;i++)
if (lista[i]!=0) //Se ainda não foi eliminado, é primo
{
conta_primos ++;
for (int j=i+1;j<lista.length;j++) //Elimina múltiplos
if (lista[j]%lista[i]==0)
lista[j]=0;
}

//Constrói lista de primos a devolver


int[] lista_primos = new int[conta_primos];
int j=0;
for (int i=0;i<lista.length;i++)
if (lista[i]!=0)
lista_primos[j++] = lista[i];

for (int i=0;i<lista_primos.length;i++)


System.out.println (lista_primos[i]);
}
}

Pág. 10 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

10. Escreva um programa que gere um array de n.ºs inteiros (entre 0 e 100) e
ordene este array por ordem crescente.

OrdenaArray.java
class OrdenaArray {
public static void main(String Args[]) {

int vec[] = new int[20];


int temp;
System.out.println("Array Inicial: " );
for (int i =0; i<20;i++) {
vec[i] = (int) (Math.random() * 100);
System.out.print(vec[i] + " " );
}
System.out.println();
for (int i = vec.length-1; i >=0;i--)
for (int j = 1; j <= i; j++)
if (vec[j-1]> vec[j]){
temp = vec[j-1];
vec[j-1] = vec[j];
vec[j] =temp;
}
System.out.println("Array Ordenado: " );

for (int i =0; i<vec.length;i++)


System.out.print(vec[i] + " " );
System.out.println();
}
}

Pág. 11 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

Exercícios Adicionais – Arrays

1. Escreva um programa para pedir 10 números ao utilizador, armazenar esses


valores num array e pedir um outro número ao utilizador para indicar quantos
números do array são inferiores a esse número.
2. Escreva um programa que peça ao utilizador um array de n inteiros e substitua
cada um dos n-1 primeiros elementos pela média entre o próprio elemento e o
seguinte. O último elemento deve ser igual à média de todos os anteriores.
3. Crie um programa para calcular a matriz transposta de uma matriz quadrada,
fornecida pelo utilizador.
4. Escreva um programa que some os elementos da diagonal principal de uma
matriz bidimensional quadrada, fornecida pelo utilizador.
5. Escreva um programa que determine se um array de inteiros está ou não
ordenado. No primeiro caso deve indicar se o ordenamento é de forma crescente
ou decrescente.
6. Escreva um programa que preencha um array de inteiros com 20 valores
aleatórios entre 0 e 99. Mostre o conteúdo deste array, listando os vinte
elementos por ordem inversa. A seguir, pedir um número ao utilizador e procurar
este número no array. Se encontrar, informe a posição em que foi encontrado,
caso contrário diga que não foi encontrado. O programa termina quando o
utilizador introduzir um número negativo.
7. Faça um programa que peça 10 n.ºs (entre –100 e 1000) ao utilizador, os
armazene e indique se foram introduzidos por ordem crescente.
8. Implemente um programa que inverta cada palavra/frase introduzida pelo
utilizador. O programa termina quando for introduzida a palavra FIM.
9. Pretende-se um programa que calcule a média e o desvio padrão de uma
sequência de n valores inteiros lidos do utilizador. As fórmulas da média e do
desvio-padrão são dadas respectivamente por:
n n
xi ( xi − E ( x)) 2
E ( x) = i =1
σ ( x) = i =1

n n −1
10. Crie um programa que calcule o produto interno dos arrays unidimensionais v1 e
v2. Recorda-se que o produto interno de dois vectores é o somatório: v1[0] ×
v2[0] + v1[1] × v2[1] + ... + v1[n - 1] × v2[n - 1], em que n é a dimensão dos

Pág. 12 de 13
Informática – Eng.ª Civil - Package #2 de Exercícios em Java

arrays. De notar que a operação produto interno só faz sentido para arrays do
mesmo tamanho.
11. Uma tabela pode servir para representar conjuntos de números inteiros,
Considerando que o domínio é [0,9], uma tabela de 10 elementos binários (zeros
e uns) pode indicar quando é que cada uma dos números pertence ou não a um
dado conjunto. Para isso, basta colocar o valor de tabela[i] a 0 se o n.º não
pertencer ao conjunto ou a 1 caso pertença. Por exemplo, a tabela
{1,0,1,1,0,1,1,1,0,0} indica que os números que fazem parte do conjunto são:
0,2,3,5,6,7. Desenvolva um programa que peça ao utilizador 2 conjuntos A e B
de n.ºs de 1 dígito e calcule A∪B e A∩B;
12. Faça um programa que leia os resultados de cada um dos 13 jogos que servem
de base ao Totobola. Em função do resultado introduzido, deve ser apresentado
1, X ou 2, conforme se venceu a equipa da casa, empataram ou venceram os
visitantes. O output esperado, após introdução dos resultados dos desafios é:
Jogo 1: X
Jogo 2: 1
Jogo 3: 1
...
Jogo 13: 2

Pág. 13 de 13

You might also like