Documente Academic
Documente Profesional
Documente Cultură
B[8][6]
A[10]
Arrays e Matrizes em Java
Slides_Java_4
Sistemas Informáticos
– Instanciar a tabela (é necessário usar new para criar a tabela – Ex: notas [1] pode ser usado nas mesmas circunstâncias em que
porque as tabelas são objectos) uma variável do tipo double pode ser usada (podemos atribuir-lhe
notas = new double [50]; // cria uma tabela com 50 doubles um valor, imprimi-la, utilizá-la em expressões, …)
1
Em resumo... Voltando ao problema...
• Declarar um array: class Notas {
int r[]; public static void main(String arg[]) {
double nums[]; final int MAX = 50;
String nomes[]; float [] notas = new float [MAX];
• Criar um array int conta = 0;
float n, media;
r = new int[10];
// leitura das notas (termina com nº negativo)
nums = new double[100]; do {
int s[] = new int[20]; System.out.print ("Nota do aluno "+conta+" ");
char c[] = new char[20]; n = Keyboard.readFloat();
• Indexar os elementos de um array: if (n >=0) {
r[0] = 20; notas [conta] = n;
r[9] = 100; conta ++;
}
nums[99] = 3.2;
}while (n >= 0 && conta < MAX);
s[0] = 5;
s[1] = r[0];
2
Exemplo2 3 Exercícios Simples
class AutoArray {
• int tab[] = new int[100];
public static void main(String args[]) {
int month_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
3
Tabelas de Strings Exemplo
import essential.*;
• Uma tabela tanto pode conter elementos de um tipo simples, como referências para
class Tab_Strings {
outros objectos, como Strings por exemplo.
public static void main(String args[]) {
– String [] frases = new String [25]; int n;
reserva espaço para 25 referências para objectos String. System.out.print("Numero de alunos = ");
– No entanto, esta instrução não cria as Strings propriamente ditas, mas apenas n = Keyboard.readInt();
as referências respectivas.
System.out.println("======INPUT DADOS=========");
String Tab[] = new String[n]; // aloca espaço para a tabela
– As Strings têm que ser criadas explicitamente: for(int i=0;i < n; i++){
frases [0] = new String (“Bom dia”); ou System.out.print("Nome do aluno "+i+" :");
Tab[i] = Keyboard.readLine(); // guarda strings na tabela
frases [1] = “Bom dia”; }
....
System.out.println("======NOMES=========");
for(int i=0;i < n; i++)
System.out.println("Nome do aluno "+i+" :"+ Tab[i]);
}
}
Matrizes
4
Inicialização de Matrizes Representação Array 2D
• É possível criar e inicializar uma tabela bi- 101 int n = 0;
dimensional numa única instrução:
010 for(int i = 0; i < 3; i++)
int [] [] tabela = {{1,0,1}, {0,1,0}}
for(int j = 0; j < 5; j++)
– Esta instrução cria uma tabela de inteiros com duas
linhas e três colunas, inicializada com os valores dados twoD[i][j] = n++;
• Alternativa:
int A[][] = new int[n][m];
for(int i=0; i < n; i++)
for(int j=0; j < m;j++)
A[i][j] = i+j;
Exemplo1 Exemplo2
class Matrix { class AutoMatrix {
public static void main(String args[]) { public static void main(String args[]) {
double m[][]; double m[][] = {
{ 0, 0, 0, 0},
m = new double[4][4]; { 0, 1, 2, 3},
{ 0, 2, 4, 6},
m[0][0] = 1; { 0, 3, 6, 9},
m[1][1] = 1; };
m[2][2] = 1; System.out.println(m[0][0] +" "+ m[0][1] +" "+ m[0][2] +" "+ m[0][3]);
m[3][3] = 1; System.out.println(m[1][0] +" "+ m[1][1] +" "+ m[1][2] +" "+ m[1][3]);
System.out.println(m[2][0] +" "+ m[2][1] +" "+ m[2][2] +" "+ m[2][3]);
System.out.println(m[0][0] +" "+ m[0][1] +" "+ m[0][2] +" "+ m[0][3]); System.out.println(m[3][0] +" "+ m[3][1] +" "+ m[3][2] +" "+ m[3][3]);
System.out.println(m[1][0] +" "+ m[1][1] +" "+ m[1][2] +" "+ m[1][3]); }
System.out.println(m[2][0] +" "+ m[2][1] +" "+ m[2][2] +" "+ m[2][3]); }
System.out.println(m[3][0] +" "+ m[3][1] +" "+ m[3][2] +" "+ m[3][3]);
}
}
}
}
0010
}
} 0001
5
Soma de duas Matrizes Exercício
class SomaMatrizes{
public static void main(String args[]){
int A[][] = new int[10][3]; • Escreva um programa em Java para calcular
int B[][] = new int[10][3];
int C[][] = new int[10][3]; o mínimo e o máximo valor numa matriz.
// comentário…. inicializar Matriz A: A[i][j]= 1
// comentário…. inicializar Matriz B: B[i][j]= 2
for(int i=0; i < 10; i++)
for(int j=0; j < 3; j ++){
A[i][j] = 1;
B[i][j] = 2;
}
System.out.println("MATRIZ C");
for(int i=0; i < 10; i++){
for(int j=0; j < 3; j ++){
C[i][j]= A[i][j] + B[i][j];
System.out.print(C[i][j]+ " ");
}
System.out.println();
}
}
}
Matrizes 3D Exemplo
class threeDMatrix {
public static void main(String args[]) {
• Declaração de uma matriz tri-dimensional 10x10x10: int threeD[][][] = new int[3][4][5];
int Mat3D [][][] = new int[10][10][10]; int i, j, k;
6
Exercício Problema Transporte
Uma empresa de betão tem 3 fábricas (F1, F2, F3) que devem
fornecer 3 obras de construção (O1, O2, O3). Os custos por
transporte de uma carga de cada fábrica para cada obra são os
representados na seguinte matriz:
O1 O 2 O3
F1 3 12 10
F 2 17 18 35
Calcular a Média de Um Array e F 3 7 10 24
• Calcule o custo do esquema proposto. • Escreva um programa em Java que leia uma
Custo = 3x4 + 12x0 + ... + 24x5 matriz de um ficheiro em disco
“matriz.txt”.
• Escreva um programa em Java para calcular
o custo deste cenário de transporte. • O programa deve indicar se é uma matriz
identidade ou não.
4
1000
0100
0010
0001
Exercício 1B Exercício 2
• Escreva um programa em Java que verifique
• Escreva um programa em Java que leia duas
se uma matriz A[N][N] é ou não uma matriz
matrizes de dois ficheiros em disco
simétrica. 1 2 3 4
“mat_A.txt” e “mat_B.txt”.
2 5 6 7
• O programa deve indicar se as duas matrizes
3 6 9 0
são iguais ou diferentes. Se forem diferentes
4 7 0 3
deve indicar quantos são os valores
4 • Caso não seja uma matriz simétrica deve
diferentes. 4 4 1234 inverter a matriz da seguinte forma:
1234 1234 4557 1 2 2 2 1 5 5 5
4567 4567 7190 5 4 2 2 2 4 5 5
7890 7890 0123 5 5 4 2 2 2 4 5
0123 0123 5 5 5 4 2 2 2 4
7
Multiplicação de Matrizes Exercício
x1 x2 y1 y 2
• A= x3 x4 B= y3 y 4 • Write a java program to multiply two matrices.
x1 * y1 + x2 * y3 x1 * y 2 + x 2 * y 4
• C=AxB=
x3 * y1 + x 4 * y3 x3 * y 2 + x4 * y 4
1 2 5 6 5 4
3 4
x 0 −1
= 15 14
• Será que cada número par é igual à soma de dois • Considere que tem uma tabela de 10 inteiros
números primos? que é inicializada com valores aleatórios:
• Verifique com a tabela de primos em baixo (N >= 8 até 52)
n = new int[10];
• Exemplos: 12 = 5 + 7
// initialize the array
28 = ... + ...
40 = ... + ... for (int i = 0; i < 10; i++) {
52 = ... + ... n[i] = (int)(Math.random()*100);
}
• Escreva um programa para ordenar esta
int primes[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43}; tabela.