sábado, 14 de julio de 2012

3.2.3 Aplicaciones con Arreglos


Aplicaciones con Arreglos
Supongamos que queremos utilizar una aplicación para pedir los valores de dos matrices A y B y obtener una matriz C resultante, la cual sería la suma de cada elemento correspondiente a los elementos de A y de B.
La aplicación pudiera quedar como sigue:

import java.io.*;

public class AplicacionMatrices6 {
public static void main(String[] args) throws IOException {
int a[][] = new int[3][3];
int b[][] = new int[3][3];
int c[][] = new int[3][3];
// definiendo un objeto de entrada para tomar datos del teclado
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
// pidiendo los datos del teclado de la matriz a
System.out.println("Pidiendo Valores Matriz A");
for (int i=0; i<a.length; i++) {
for (int j=0; j<a[0].length; j++) {
System.out.print("Da elemento " + (i+1)+ " , " + (j+1) + " : ");
a[i][j] = Integer.parseInt(in.readLine());
}
System.out.println();
}
// pidiendo los datos del teclado de la matriz b
System.out.println("Pidiendo Valores Matriz B");
for (int i=0; i<b.length; i++) {
for (int j=0; j<b[0].length; j++) {
System.out.print("Da elemento " + (i+1)+ " , " + (j+1) + " : ");
b[i][j] = Integer.parseInt(in.readLine());
}
System.out.println();
}
//desplegando los valores por renglon matriz a
System.out.println("Matriz A");
for (int i=0; i<a.length; i++) {
for (int j=0; j<a[0].length; j++) {
System.out.print(" " + a[i][j] + " ");
}
System.out.println();
}
System.out.println();
//desplegando los valores por renglon matriz b
System.out.println("Matriz B");
for (int i=0; i<b.length; i++) {
for (int j=0; j<b[0].length; j++) {
System.out.print(" " + b[i][j] + " ");
}
System.out.println();
}
System.out.println();
// sacando la suma de a+b en c
for (int i=0; i<b.length; i++) {
for (int j=0; j<b[0].length; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
//desplegando los valores por renglon matriz c resultante
System.out.println("Matriz C");
for (int i=0; i<b.length; i++) {
for (int j=0; j<b[0].length; j++) {
System.out.print(" " + c[i][j] + " ");
}
System.out.println();
}
System.out.println();

}

}

Dicha aplicación muestra la siguiente salida:
Vemos como la clave de la asignación de cada elemento de la matriz resultante es tomar cada elemento de cada matriz correspondiente:
c[i][j] = a[i][j] + b[i][j];
donde i varia primero que la j, tomando los diferentes valores ayudados para esto con cada uno de los ciclos.
Menú de operaciones con una matriz

La siguiente aplicación nos ayuda a visualizar la manera en la que podemos partir la aplicación en pequeños problemas, solucionando uno a cada tiempo y uniendo todos los elementos en un menú que utiliza los métodos predefinidos para lectura de datos de cualquier matriz, despliegue de los elementos de cualquier matriz, suma y promedios, la aplicación quedaría como la siguiente:

import java.io.*;

public class AplicacionMatrices7 {
private static final int REN = 3;
private static final int COL = 3;
// para pedir los valores de teclado de cualquier matriz ya creada
public static void pide_matriz(int matriz[][]) throws IOException{
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
for (int i=0; i<matriz.length; i++) {
for (int j=0; j<matriz[0].length; j++) {
System.out.print("Da elemento " + (i+1)+ " , " + (j+1) + " : ");
matriz[i][j] = Integer.parseInt(in.readLine());
}
System.out.println();
}
}
// para desplegar los datos de cualquier matriz
public static void despliega_matriz(int matriz[][]) {
for (int i=0; i<matriz.length; i++) {
for (int j=0; j<matriz[0].length; j++) {
System.out.print(" " + matriz[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
// dadas las matrices a y b, las suma en c
public static void suma(int a[][], int b[][], int c[][]) {
for (int i=0; i<b.length; i++) {
for (int j=0; j<b[0].length; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
}
// para calcular el promedio de la matriz cualquiera que sea
public static double promedio(int matriz[][]) {
double suma = 0d;
for (int i=0; i<matriz.length; i++) {
for (int j=0; j<matriz[0].length; j++) {
suma += matriz[i][j];
}
}
return suma/(matriz.length * matriz[0].length);
}
public static void main(String[] args) throws IOException {

char opcion;
int a[][] = new int[REN][COL];
int b[][] = new int[REN][COL];
int c[][] = new int[REN][COL];
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
opcion = ' ';
while (opcion != '5') {
System.out.println(" Menu de Matrices");
System.out.println();
System.out.println("1. Pedir datos matrices A y B");
System.out.println("2. Desplegar datos Matrices A y B");
System.out.println("3. Obtener Suma en C y desplegarla");
System.out.println("4. Desplegar Promedio de A y de B");
System.out.println("5. Fin");
System.out.println("¿Opcion deseada (1-5) ?");
opcion = in.readLine().charAt(0);
switch (opcion) {
case ('1') :
pide_matriz(a);
pide_matriz(b);
break;
case ('2') :
despliega_matriz(a);
despliega_matriz(b);
break;
case ('3') :
suma(a, b, c);
despliega_matriz(c);
break;
case ('4') :
System.out.println("El promedio de matriz A = " + promedio(a));
System.out.println("El promedio de matriz B = " + promedio(b));
break;
case ('5') :
System.out.println("Hasta Luego!");
break;
default:
System.out.println("Opcion debe ser de 1 a 5");
break;
};
}

}

}

La aplicación ejecutada se muestra en los siguientes desplegados:

Con la opción 1.-

Con la opción 2.-


Con la opción 3.-


Con la opción 4.-

Y finalmente salir opcion 5.-




Es importante hacer notar aquí que cada método tiene una tarea importante y que utilizando el método y mandándole el parámetro necesario, obtenemos el resultado adecuado.

No hay comentarios:

Publicar un comentario en la entrada