Está en la página 1de 19

TDS1102-Programación 1 /

BISOFT-02 Programación 1

Tema 9:
Arreglos Multidimensionales o
Matrices

Copyright  Cenfotec S. A. (Julia Espinoza, Antonio Luna, Jose A. Sánchez y María Eugenia Ucrós)
 Copyright Cenfotec S.A. 2014
Objetivos
• Conocer y comprender el uso de los arreglos
de múltiples dimensiones.
• Identificar usos prácticos de las matrices.
• Desarrollar soluciones con diagramas de flujo
que involucren matrices de dos dimensiones.
• Representar y usar en el lenguaje de
programación Java matrices de dos
dimensiones.

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices

Supongamos que se quiere guardar las ventas


de todos los días de la semana para las 4
semanas de un mes:
• Cuántos arreglos se necesitan?
• De qué tamaño?

• Y si se pudiera guardar toda la información en


un solo arreglo, cómo se guardaría?

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices

Día

Ventas: 0 1 2 3 4

0 1.2 2.7 3.5 2.0 5.1


Semana

1 2.0 3.2 2.5 1.5 3.2

2 2.7 2.5 3.5 5.1 3.5

3 0.0 0.0 0.0 0.0 0.0

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices

• Una matriz es un arreglo de varias


dimensiones, es decir, por cada elemento hay
otro arreglo.
• Las matrices más usadas son las de dos
dimensiones, las cuales tienen filas y
columnas.
• Siempre se referencia primero las filas y luego
las columnas.

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
día
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0

float [][] ventas = new float[4][5]; //DECLARACIÓN DE UNA MATRIZ


//Y RESERVA DE ESPACIO EN MEMORIA:
//con 4 filas y 5 columnas.
ventas[1][3] = 1.5; //Acceso al elemento de la fila 1 y columna 3 (semana 2 y día 4)
ventas = {{1.2, 2.7, 3.5, 2.0, 5.1}, {2.0, 3.2, 2.5, 1.5, 3.2}, {2.7, 2.5, 3.5, 5.1, 3.5},
{0, 0, 0, 0, 0}} ; //Inicialización de una matriz de 4 filas y 5 columnas

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
• Representación en la
memoria de una matriz:
//Declaración y reserva de espacio en
//memoria de una matriz de 2 filas En memoria principal:
//y 3 columnas en Java:
...
float ventas [][] = new float[2][3];
Datos 120 45 ventas[0][0]
121 56 ventas[0][1]
ventas: 122 43 ventas[0][2]
0 123 12 ventas[1][0]
45 56 43
124 25 ventas[1][1]
1 12 25 33 125 33 ventas[1][2]

0 1 2

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
día
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0

//Cálculo del promedio de ventas de la segunda semana del mes


float total = 0;
for (int dia=0; dia<5; dia++) {
total = total + ventas[1][dia];
}
System.out.println("Promedio de la segunda semana: + total/5.0);

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
día
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0

//Cálculo del promedio de ventas de todos los jueves


float total = 0;
for (int semana=0; semana <4; semana ++){
total = total + ventas[semana][3];
}
System.out.println("Promedio de los jueves: + total/4.0);

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
día
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0

//Cálculo del promedio de ventas de todo el mes (para una matriz de 4 filas y 5
//columnas)
float total = 0;
for (int semana=0; semana <4; semana ++){
for (int dia=0; dia<5; dia++) {
total = total + ventas[semana][dia];
}
}
System.out.println("Promedio del mes:” + total/20);

 Copyright Cenfotec S.A. 2014


Arreglos Multidimensionales o matrices
• Observe el manejo de los índices en la matriz ventas,
cuando se recorre toda con dos ciclos anidados:
ventas:
i 0
0 1 2 3 4
1
0 1 2 3 4
2
0 1 2 3 4
3
0 1 2 3 4
j
 Copyright Cenfotec S.A. 2014
Arreglos Multidimensionales o matrices
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0
//Función que calcula el promedio de ventas de todo el mes (Para una matriz de
//cualquier tamaño)
static float promedioMatriz (float pventas [] [] ) {
float total = 0;
for (int semana=0; semana <pventas.length; semana ++){
for (int dia=0; dia<pventas[semana].length; dia++){
total = total + pventas[semana][dia];
}
}
return total/(pventas.length* pventas[0].length);
}
 Copyright Cenfotec S.A. 2014
Arreglos Multidimensionales o matrices
Días 0 1 2 3 4
0 1.2 2.7 3.5 2.0 5.1
Semana

1 2.0 3.2 2.5 1.5 3.2


2 2.7 2.5 3.5 5.1 3.5
3 0.0 0.0 0.0 0.0 0.0
//Procedimiento que lee una matriz de números flotantes (para una matriz de
//cualquier tamaño)
static void leerMatrizFloat (float pventas [] []) throws java.io.IOException {
//Declaración de in y de out
float total = 0;
for (int semana=0; semana <pventas.length; semana ++){
for (int dia=0; dia<pventas[semana].length; dia++){
pventas[semana][dia] = Float.parseFloat(in.readLine());
}
}
}
 Copyright Cenfotec S.A. 2014
Ejercicios

1. Suponga que usted tiene que guardar información de una agencia


de automóviles. Esta agencia vende solamente 4 modelos de
carros (modelos 1, 2, 3 y 4). Para cada modelo se guarda el
número de carros vendidos en los últimos 10 años y los precios a
los que se vendió cada modelo en esos últimos 10 años. Para
esto organice la información así:
• En una tabla (matriz en Java) guarde el número de carros de
cada modelo, vendidos en los últimos 10 años.
• En otra tabla (matriz en Java) guarde el precio de cada uno
de los modelos para los últimos 10 años.
• Haga un procedimiento que lea una matriz de enteros y otro
procedimiento que lea una matriz de números reales.

 Copyright Cenfotec S.A. 2014


Ejercicios

• Haga una función que calcule el año en el que se vendió más


carros.
• Haga una función que calcule el máximo número de carros
vendidos para el modelo 2.
• Haga una función que calcule el promedio de carros vendidos
para el modelo 4.
• Haga una función que calcule el modelo que tuvo el mayor
precio en el último año.
• Haga una función que calcule el modelo que tuvo el menor
precio en el primer año.
• Haga una función que calcule el precio promedio del modelo
1 en los últimos 10 años.
• Haga un programa principal (main) que pruebe todas las
funciones anteriores.
 Copyright Cenfotec S.A. 2014
Ejercicios

4. Suponga que usted tiene que guardar la información del registro de


notas de Cenfotec, para esto por cada estudiante se guardan las
notas de los cuatro cursos que tomó el estudiante en el
cuatrimestre. Suponga que son sólo 10 estudiantes.
a. Cómo va a organizar la información? (en una matriz? Cuántas
matrices? De qué tipo y de qué dimensiones la(s) matriz(ces)?)
b. Haga un procedimiento en Java que lea la(s) matriz(ces) del
punto a.
c. Haga una función en Java que recibe las notas de todos los
estudiantes y el número de un estudiante, y retorne el promedio
de los cursos de ese estudiante.
d. Haga una función en Java que recibe las notas de todos los
estudiantes, y retorne el estudiante que obtuvo la máxima nota
en el curso 1.
 Copyright Cenfotec S.A. 2014
Ejercicios

e. Haga un procedimiento en Java que imprima la(s) matriz(ces)


del punto a.
f. Haga un programa principal en el que declare la(s)
matriz(ces) que necesite, reserve espacio en memoria, use el
procedimiento del punto a para leer la(s) matriz(ces), imprima
los datos calculados en las funciones b, c y d, y luego use el
procedimiento del punto e para imprimir la(s) matriz(ces).
5. Haga una función que reciba una matriz de enteros y retorne true
si la matriz es triangular superior, o false si no. Una matriz es
triangular superior si todos los elementos por debajo de la
diagonal principal son iguales a cero Ej:
1 2 3
0 4 8
0 0 0
 Copyright Cenfotec S.A. 2014
Ejercicios

6. Haga una función que reciba una matriz de enteros y retorne true
si la matriz es triangular inferior, o false si no. Una matriz es
triangular inferior si todos los elementos por encima de la
diagonal principal son iguales a cero Ej: 1 0 0
5 4 0
3 7 0
7. Haga una función que reciba una matriz de enteros y retorne true
si la matriz es diagonal, o false si no. Una matriz es diagonal si
todos los elementos que están en la diagonal principal son
diferentes de cero y la matriz es triangular inferior y superior. Ej:
1 0 0
0 4 0
0 0 9

 Copyright Cenfotec S.A. 2014


Ejercicios

8. Haga una función que reciba una matriz de enteros y retorne true
si la matriz es simétrica, o false si no. Una matriz es simétrica si
para cada elemento [i][j] es igual al elemento [j][i] Ej:
1 5 3
5 4 7
3 7 0

9. Haga un programa principal que pruebe las funciones de los


puntos 5-8.

Modificado por: Priscilla Chaves M  Copyright Cenfotec S.A. 2014

También podría gustarte