ARREGLOS BIDIMENSIONALES
CONTENIDO Arreglos Bidimensionales (matrices) Qu son Cmo se declaran Cmo se insertan y leen datos
Ejemplos
EISC
Universidad del Valle Slide 2
MATRICES
Tambin llamados arreglos bidimensionales Es un conjunto de datos de un mismo tipo que estn almacenados en arreglos de dos dimensiones.
EISC
Universidad del Valle Slide 3
MATRICES
Tambin llamados arreglos bidimensionales Es un conjunto de datos de un mismo tipo que estn almacenados en arreglos de dos dimensiones. Tienen una cantidad de filas y una cantidad de columnas 3.5 5.0 4.5
EISC
MATRICES * Al igual que los arreglos unidimensionales, los ndices empiezan a partir de cero y se indican entre corchetes: [ ][ ]. El primer ndice indica la fila y el segundo indica la columna.
EISC
Universidad del Valle Slide 5
ARREGLOS
BIDIMENSIONALES
ndice para las columnas
0 0 1 2 3.5 5.0
1 4.0 5.0
2 5.0 3.0
3 5.0 2.5
4.5
4.5
4.0
5.0
PARA RECORDAR
* Una matriz almacena elementos del mismo tipo. * Una matriz es de tamao fijo (mxn). * Cada elemento se guarda en un espacio independiente. * Cada espacio se referencia con dos ndices. * El primer ndice referencia las filas. * El segundo ndice referencia las columnas. * Los ndices se empiezan a contar a partir de 0. * En una matriz de mxn sus ndices irn de 0 a m-1 para las filas y de 0 a n-1 para las columnas.
EISC
Universidad del Valle Slide 7
MATRICES
Oscar Juan Sarah Diana
Jhon
Andrea
EISC
Universidad del Valle Slide 8
MATRICES
0 Oscar Juan Jhon 1 Sarah Diana Andrea
0 1 2
EISC
Universidad del Valle Slide 9
MATRICES
Es posible definir la siguiente matriz? Sarah Oscar Kate 24.8 50.6 13.3
EISC
Universidad del Valle Slide 10
MATRICES
Es posible definir la siguiente matriz?
EISC
Universidad del Valle Slide 11
MATRICES
Cmo definir un arreglo bidimensional (Matriz)
EISC
Universidad del Valle Slide 12
MATRICES
Cmo definir un arreglo bidimensional (Matriz) donde m es la cantidad de filas y n es la cantidad de columnas
EISC
Universidad del Valle Slide 13
MATRICES
String nombres[ ][ ]=new String[3][2]; double notas[ ][ ]=new double[50][4];
EISC
Universidad del Valle Slide 14
MATRICES
String nombres[ ][ ]=new String[3][2];
EISC
Universidad del Valle Slide 15
nombres 0 1 2
null
null null 0 1 0.0 0.0 0.0
null
null null 2 0.0 0.0 0.0 3 0.0 0.0 0.0
notas
0.0 0.0
2 0.0 . . . . . 49 0.0
EISC
Universidad del Valle
0.0
0.0
0.0
Slide 16
Declarando e Inicializando
Se puede declarar e inicializar una matriz al igual que los vectores: Ejemplos: String nombres[ ][ ] = {{ Oscar, Fonseca }, { John , Santos}, { Julio , Ruiz }};
double notas[ ][ ] = {{ 5.0, 4.0, 5.0}, { 4.3, 4.7, 3.8}, { 2.7, 3.2, 4.0}, { 4.3, 4.7, 5.0}};
EISC
Universidad del Valle Slide 17
Declarando e Inicializando
Se puede declarar e inicializar una matriz al igual que los vectores: Ejemplos: String nombres[ ][ ] = {{ Oscar, Fonseca }, { John , Santos}, Matriz de cadenas { Julio , Ruiz }}; de texto de 3 filas
y 2 columnas.
double notas[ ][ ] = {{ 5.0, 4.0, 5.0}, { 4.3, 4.7, 3.8}, { 2.7, 3.2, 4.0}, { 4.3, 4.7, 5.0}};
EISC
Universidad del Valle
Slide 18
MATRICES
Cmo definir una matriz de enteros, con 4 filas y 3 columnas, llamada numeros
EISC
Universidad del Valle Slide 19
MATRICES
Cmo definir una matriz de enteros, con 4 filas y 3 columnas, llamada numeros
EISC
Universidad del Valle Slide 20
MATRICES
3104567 2134231 24 50 109 201 -1 -30
1231141
3123232 5645343
13
40 23
130
110 150
-45
-63 -70
2233424
27
170
-5
MATRICES
3104567
2134231 1231141
24
50 13
109
201 130
-1
-30 -45
3423232
5645343 2233424
40
23 27
110
150 170
-63
-70 -5
MATRICES
3.104567
2.134231 1.231141 3.423232 5.645343 2.233424 Cmo definir esta matriz?
EISC
Universidad del Valle Slide 23
24.8
50.6 13.3 40.5 23.3 27.5
MATRICES
3.104567
2.134231 1.231141 3.423232 5.645343 2.233424
24.8
50.6 13.3 40.5 23.3 27.5
DNDE
EST EL ERROR?
String nombres [] = new String[4][3]; int anchoLargo = new int [15][2]; double valorTiempo [][] = int [7,7]; String nombres [2][2] = {{Oscar,100}, {Sofia,A}};
MATRICES
Cmo insertar datos en los arreglos bidimensionales
(matrices)?
EISC
Universidad del Valle Slide 26
MATRICES
Cmo insertar datos en los arreglos bidimensionales?
Debe indicar la posicin de la fila y de la columna donde va a almacenar el dato
nombreDelArreglo[posicionFila][posicionColumna]=valor;
EISC
Universidad del Valle Slide 27
MATRICES
Cmo insertar datos en los arreglos bidimensionales?
Debe indicar la posicin de la fila y de la columna donde va a almacenar el dato
nombres
nombres[0][0]=Oscar;
nombres[0][1]=Sarah;
Oscar null
null
Sarah null
null
EISC
Universidad del Valle Slide 28
MATRICES
Cmo insertar datos en los arreglos bidimensionales?
Debe indicar la posicin de la fila y de la columna donde va a almacenar el dato
nombres
nombres[0][0]=Oscar;
nombres[0][1]=Sarah; nombres[?][?]=Jhon; nombres[?][?]=Andrea;
EISC
Universidad del Valle
Oscar null
Jhon
Sarah null
Andrea
Slide 29
MATRICES
Cmo insertar datos en los arreglos bidimensionales?
Debe indicar la posicin de la fila y de la columna donde va a almacenar el dato
nombres
nombres[0][0]=Oscar;
nombres[0][1]=Sarah; nombres[2][0]=Jhon; nombres[2][1]=Andrea;
EISC
Universidad del Valle
Oscar null
Jhon
Sarah null
Andrea
Slide 30
MATRICES
Dnde puede haber errores? int matriz[][] = new int [5][3]; double i; int m=6,n=3; ... matriz[0][3] = 21.2; matriz[i][n] = 90; matriz[m-1][n-1] = matriz [m][n] + 10; matriz[5][3]=matriz[n][m]; ...
EISC
Universidad del Valle Slide 31
MATRICES
Cmo recuperar los datos de los arreglos bidimensionales?
EISC
Universidad del Valle Slide 32
MATRICES
Cmo recuperar los datos de los arreglos
bidimensionales?
nombreDelArreglo[posicionFila][posicionColumna]
EISC
Universidad del Valle Slide 33
MATRICES
Cmo recuperar datos de los arreglos bidimensionales?
Debe indicar la posicin de la fila y de la columna
nombres
nombres[0][0]
Oscar null
Jhon
Sarah null
Andrea
EISC
Universidad del Valle Slide 34
MATRICES
Presente el conjunto de instrucciones Java para crear una matriz de 50x4 nmeros reales. Adicione las instrucciones necesarias para solicitar al usuario cada uno de los nmeros
EISC
Universidad del Valle Slide 35
MATRICES
Presente el conjunto de instrucciones Java para crear una matriz de 50x4 nmeros reales.
double numeros[][]= new double[50][4];
EISC
Universidad del Valle Slide 36
0
0 1 2
...
...
...
...
49
EISC
Universidad del Valle Slide 37
MATRICES
Presente el conjunto de instrucciones Java para crear una matriz de 50x4 nmeros reales. Adicione las instrucciones necesarias para solicitar al usuario cada uno de los nmeros
double numeros[][]= new double[50][4];
EISC
Universidad del Valle Slide 38
0
0 1 2
...
...
...
...
49
EISC
Universidad del Valle Slide 39
0
0 1 2
...
...
...
...
49
EISC
Universidad del Valle Slide 40
MATRICES
double numeros[][]= new double[50][4]; numeros[0][0]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][1]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
EISC
Universidad del Valle Slide 41
0
0 1 2
...
...
...
...
49
EISC
Universidad del Valle Slide 42
MATRICES
double numeros[][]= new double[50][4]; numeros[0][0]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][1]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][0]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][1]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
EISC
Universidad del Valle Slide 43
0
0 1 2
...
...
...
...
49
EISC
Universidad del Valle Slide 44
numeros[0][0]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][1]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[0][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][0]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][1]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero)); numeros[1][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
...
numeros[49][2]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
numeros[49][3]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
EISC
Universidad del Valle Slide 45
for (int i=0; i<=49; i=i+1){ for (int j=0; j<=3; j=j+1){ numeros[i][j]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero en la posicin +i+ +j)); } }
EISC
Universidad del Valle Slide 46
for (int i=0; i<=49; i=i+1){ for (int j=0; j<=3; j=j+1){
EISC
Universidad del Valle Slide 47
for (int i=0; i<=49; i=i+1){ for (int j=0; j<=3; j=j+1){
EISC
Universidad del Valle Slide 48
for (int i=0; i<=49; i=i+1){ for (int j=0; j<=3; j=j+1){
EISC
Universidad del Valle Slide 49
Matriz de 30x6
0
0 1 2
...
..
...
..
29
Matriz de 30x6
0
0 1 2
...
..
...
..
29
Matriz de 4x4
0
0 1 2
3
Matriz de 4x4
0
0 1 2
3
MATRICES
Presente el conjunto de instrucciones Java para crear una matriz de 50x4 nmeros reales. Adicione las instrucciones necesarias para solicitar al usuario cada uno de los nmeros
EISC
Universidad del Valle Slide 54
numeros[i][j]=Double.parseDouble(JOptionPane.showInputDialog(Digite un numero));
} } String mensaje=; for (int i=0; i<=49; i=i+1){ for (int j=0; j<=3; j=j+1){
mensaje+= numeros[i][j]+ );
} mensaje+=\n; }
EISC
Universidad del Valle Slide 55
EISC
Universidad del Valle Slide 56
EISC
Universidad del Valle Slide 57
EISC
Universidad del Valle Slide 58
Ejemplo 1:
Escriba un programa en Java que solicite el cdigo y el nombre de los estudiantes de cualquier curso y los muestre todos al final. Use una matriz para guardar los datos solicitados.
EISC
Universidad del Valle Slide 59
Ejemplo 1: Anlisis
* Debemos capturar los nombres de m estudiantes. por lo tanto requerimos saber el valor de m para saber cuntas filas tendr la matriz. * La matriz tendr dos columnas: una para el cdigo del estudiante (String) y otra para el nombre (String).
* La matriz ser del tipo String y de tamao mx2.
* La salida del programa ser un String que contendr la lista numerada de los nombres de los estudiantes.
EISC
Universidad del Valle Slide 60
EISC
Universidad del Valle Slide 61
for (int m=0; m < estudiantesCurso.length; m++){ salida += (m+1) + "\t"; for (int n=0; n < estudiantesCurso[m].length; n++){ salida += estudiantesCurso[m][n] + "\t"; } salida += "\n"; }
EISC
Universidad del Valle Slide 62
los resultados en un Area de Texto JTextArea areaSalida = new JTextArea(); JScrollPane scroll = new JScrollPane(areaSalida); areaSalida.setText( salida ); JOptionPane.showMessageDialog( null, scroll, "Resultados", JOptionPane.INFORMATION_MESSAGE );
EISC
Universidad del Valle Slide 63
Ejemplo 2:
Escriba un programa que lea dos matrices de mxn, calcule la suma de ellas y muestre el resultado.
EISC
Universidad del Valle Slide 64
m=Integer.parseInt(JOptionPane.showInputDialog( "Nmero de filas de las matrices:")); n=Integer.parseInt(JOptionPane.showInputDialog( "Nmero de Columnas de las matrices:")); a = new int [m][n]; b = new int [m][n]; c = new int [m][n]; //Contina
EISC
Universidad del Valle Slide 65
EISC
Universidad del Valle Slide 66
static void leerMatriz(int matriz[][], String s){ for(int m=0; m < matriz.length; m++){ for(int n=0; n < matriz[m].length; n++){ matriz[m][n]=Integer.parseInt( JoptionPane.showInputDialog( s + ": Valor posicin [" + m + "][" + n + "]:")); } } }//fin mtodo leerMatriz
EISC
Universidad del Valle Slide 67
static void generarSalida (int a[][], String titulo){ salida += titulo + ":\n"; for(int m=0; m < a.length; m++){ for(int n=0; n < a[m].length; n++){ salida += a[m][n] + "\t"; } salida +="\n"; } salida +="\n"; }//fin mtodo generarSalida }//fin clase
EISC
Universidad del Valle Slide 68
ARREGLOS
0 1
BIDIMENSIONALES 2 3
0
1 2
3
6 21
5
12 32
12
43 31
5
4 5
String salida=; for (int i=0; i<=3; i++){ salida=salida+ numeros[0][i] +\n; } miArea.append(salida);
EISC
Universidad del Valle Slide 70
ARREGLOS
0 1
BIDIMENSIONALES 2 3
0
1 2
3
6 21
5
12 32
12
43 31
5
4 5
ARREGLOS
0 1
BIDIMENSIONALES 2 3
0
1 2
3
6 21
5
12 32
12
43 31
5
4 5
for (int i=0; i<=3; i++){ for (int j=0; j<=3; j++){ if (i==j){ miArea.append(\n + numeros[i][j]); } } }
De todas las posiciones, solo muestra los nmero, cuando la fila es igual a la columna (diagonal \)
EISC
Universidad del Valle Slide 73
ARREGLOS
BIDIMENSIONALES
EISC
Universidad del Valle Slide 74
int suma=0;
for (int i=0; i<=3; i++){ for (int j=0; j<=3; j++){ suma = suma + numeros[i][j]; } } miArea.append(\nLa suma es : + suma )
EISC
Universidad del Valle Slide 75
ARREGLOS
BIDIMENSIONALES
EISC
Universidad del Valle Slide 76
int suma=0; for (int i=0; i<=3; i++){ for (int j=0; j<=3; j++){
if (i==j){
suma = suma + numeros[i][j]; }
}
} miArea.append(\nLa suma es : + suma )
EISC
Universidad del Valle Slide 77
ARREGLOS
BIDIMENSIONALES
EISC
Universidad del Valle Slide 78
ARREGLOS
2 3 6 21 5 5 12 32
BIDIMENSIONALES
2 12 43 31
4 5 4 5
EISC
Universidad del Valle Slide 79
int sumaCol; for (int i=0; i<=3; i++){ sumaCol=0; for (int j=0; j<=3; j++){ sumaCol = sumaCol + numeros[j][i]; } miArea.append(\nLa suma de la columna+(j+1)+ es: + sumaCol); }
EISC
Universidad del Valle Slide 80
ARREGLOS
BIDIMENSIONALES
Ejercicio: Se requiere una aplicacin en java para almacenar los resultados de las ultimas elecciones de rector de la universidad del Valle. Los datos deben almacenarse en una matriz donde cada fila corresponde a una sede y cada columna corresponde a un candidato. El programa debe mostrar la tabla con los nombres de las sedes y los nombres de los candidatos y cada uno de los resultados. La aplicacin tambin debe mostrar el candidato ganador.
EISC
Universidad del Valle Slide 81
MATRICES
Arreglos a utilizar
Candidatos
Ivan Ramos Jorge Sanchez Jos Rios
Sedes
Cali
Palmira
Buga
Tulu
500 250
400 150
300 250
200
120
250
200
100
210
Votos
EISC
Universidad del Valle Slide 82
MATRICES
Arreglos a utilizar
Candidatos
Ivan Ramos Jorge Sanchez Jos Rios
Sedes
Cali
Palmira
Buga
Tulu
Ramos
Sanchez
Rios
500 250
400 150
300 250
200
120
250
200
100
210
Votos
EISC
Universidad del Valle Slide 83
MATRICES
Arreglos a utilizar
Candidatos
Ivan Ramos Jorge Sanchez Jos Rios
Sedes
Cali
Palmira
Buga
Tulu
Sanchez
Rios
500 250
400 150
300 250
200
120
250
200
100
210
Votos
Tulu
EISC
Universidad del Valle Slide 84
ARREGLOS BIDIMENSIONALES
public class votaciones{ public static void main (String a[]){
String candidatos[], sedes[]; int votos[][], fil, col; JTextArea area= new JTextArea(15, 30);; JScrollPane scroll = new JScrollPane(area); fil = Integer.parseInt(JOptionPane.showInputDialog ("Ingrese el nmero de sedes:")); sedes = new String[fil]; for (int x = 0; x < fil; x++){ sedes[x] = JOptionPane.showInputDialog("Sede No :"+(x+1)); }
EISC
Universidad del Valle Slide 85
ARREGLOS BIDIMENSIONALES
col = Integer.parseIntJOptionPane.showInputDialog( "Ingrese el nmero de candidatos:")); candidatos = new String[col]; for (int x = 0; x < col; x++){ candidatos[x] = JOptionPane.showInputDialog("Nombre del Candidato No :"+(x+1)); } votos = new int[fil][col]; for (int x = 0; x < fil; x++){ for (int y = 0; y < col; y++){ votos[x][y] = Integer.parseInt(JOptionPane. showInputDialog("Ingrese los votos de la sede " +sedes[x]+ "para el candidato" +candidatos[y])); } }
EISC
Universidad del Valle Slide 86
ARREGLOS BIDIMENSIONALES
int[] totalVotos = new int[candidatos.length]; for (int y = 0; y < col; y++){ for (int x = 0; x < fil; x++){ totalVotos[y] += votos[x][y]; } } int max = 0; int pos = 0; for (int i = 0; i < totalVotos.length; i++){ if ( max < totalVotos[i] ){ max = totalVotos[i]; pos = i; } } area.append("Candidato con mayora de votos: "+candidatos[pos]+. Total de Votos: "+totalVotos[pos]); }
EISC
Universidad del Valle Slide 87
ARREGLOS BIDIMENSIONALES
for (int i = 0; i < fil; i++){ area.append("\n"+sedes[i]); for (int x = 0; x < col; x++){ area.append("\n"+candidatos[x]); area.append("\t"+votos[i][x]); } } JOptionPane.showMessageDialog(null, scroll); }//fin main }//fin clase
EISC
Universidad del Valle Slide 88