Mostrando entradas con la etiqueta ciclos repetitivos. Mostrar todas las entradas
Mostrando entradas con la etiqueta ciclos repetitivos. Mostrar todas las entradas

sábado, 11 de enero de 2014

[Ejercicio resuelto Java] Sumar dos matrices de orden nxn – Platform – Teleconferencias – Register


Hace poco coloque una entrada sobre comoSumar dos matrices de orden 2x2 en java. Pero que sucedería si nuestras matrices no son tan simples y éstas son de otro orden, quizás de 3x3, 4x4, 5x4, 4x2... entre otras posibilidades.

A continuación les muestro como podemos sumar matrices de orden nxn usando java.


nxn.java
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.util.Scanner;

public class nxn {
private Scanner tec;
private int[][] matrizA;
private int[][] matrizB;
private int[][] matrizC;
private int filas, columnas;


public void CargarElementos(){
tec = new Scanner(System.in);
System.out.println("Ingrese la cantidad de filas de las matrices");
filas = tec.nextInt();
System.out.println("Ingrese la cantidad de columnas de las matrices");
columnas = tec.nextInt();
matrizA = new int[filas][columnas];
matrizB = new int[filas][columnas];
System.out.println("Ingrese los elementos de la matriz A: \n");
for(int i=0; i filas; i++){
int f=i+1;
for(int j=0; j columnas; j++){
int c = j+1;
System.out.println("Ingrese el elemento a"+f+c + " de la matriz");
matrizA[i][j] = tec.nextInt();
}
}

System.out.println("\nIngrese los elementos de la matriz B: \n");
for(int i=0; i filas; i++){
int f=i+1;
for(int j=0; j columnas; j++){
int c = j+1;
System.out.println("Ingrese el elemento b"+f+c + " de la matriz");
matrizB[i][j] = tec.nextInt();
}
}
}

public void Suma(){
matrizC = new int[filas][columnas];
for(int i=0; i filas; i++){
for(int j=0; j columnas; j++){
matrizC[i][j] = matrizA[i][j] + matrizB[i][j];
}
}
}

public void Imprimir(){
//Matriz C:
System.out.println("La Suma de ambas matrices es:");
for(int i = 0; i filas; i++){
System.out.println("");
for(int j=0; j columnas; j++){
System.out.print(matrizC[i][j] + " ");
}
}
//-----------------------------------------------------------------
System.out.println("\n Elementos de la matriz C: \n");
for(int i=0; i filas; i++){
int f=i+1;
for(int j=0; j columnas; j++){
int c = j+1;
System.out.println("Elemento c"+ f + c + ": " + matrizC[i][j]);
}
}
}

public static void main(String[] ar){
nxn n = new nxn();
n.CargarElementos();
n.Suma();
n.Imprimir();
}
}

Inicialmente leemos mediante el teclado la cantidad de filas y columnas de nuestras matrices.La teoría de matrices nos dice que para sumar dos matrices éstas deben ser del mismo orden, por ello no leemos el orden de las matrices por separado, sino que leemos una sola vez para ambas matrices.

Necesitaremosdos ciclos for, uno que se repetirá tantas veces como filas posean las matrices, es decir, representa la cantidad de filas de las matrices. El otro ciclo for debe ir dentro del anterior, éste se repetirá tantas veces como columnas posean las matrices.Sí lo vemos, ésto nos da la posibilidad de ir asignando valores a los componentes de la matriz uno por uno. a11, a12, 13, a1n... a21, a22, a23, a2n... ann...

Las lineas int f = i+1 y int c = j+1 nos ayudan a dar un mensaje al usuario refiriéndonos a los componentes de las matrices de una manera matemática,hay que recordar que en java el primer elemento en una matriz es el a00, pero en matemáticas (álgebra lineal) el primer elemento es a11. Por lo tanto, si aij = a00 entonces, como f=i+1 y c=j+1 ; afc = a11.

Tanto para leer, sumar e imprimir los elementos de las matrices usaremos los dos ciclos for, es decir, trabajaremos análogamente para realizar dichas tareas.

Además, para sumar ambas matrices lo que haremos será tener una nueva matriz la que llamaremos matrizc[i][j] en la cual almacenaremos los componentes de las matrices A y B sumados.

Nota: Si desean saber un poco mas sobre matrices en java pueden observar la siguiente entrada:

Finalmente la salida sería la siguiente: