Lab 13 JONaG
Lab 13 JONaG
Lab 13 JONaG
(
(
(
(
(
(
=
...
... ...
...
...
...
3 2 1
3 33 32 31
2 23 22 21
1 12 12 11
Nota: Una matriz cuadrada es aquella donde el nmero de filas es igual al nmero de columnas.
Laboratorio de Algoritmos y Estructuras de Datos
Nro. DD-106
Pgina 2 de 5
Dentro de la clase Matrices, defina los mtodos indicados a continuacin. Luego de desarrollar cada
mtodo, agregue o modifique el cdigo necesario al mtodo main para comprobar el funcionamiento:
3. Un mtodo esNula que reciba una matriz y determine si es una matriz nula. Una matriz nula es aquella en
la que cada uno de sus elementos es igual a 0.
public static boolean esNula (int[][] A) {
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A[0].length; c++)
if (A[f][c] != 0)
return false;
return true;
}
En el mtodo main agregue el cdigo siguiente para verificar el funcionamiento del mtodo esNula:
System.out.println(esNula(num1));
4. Un mtodo sonIguales que determine si dos matrices A y B son iguales. Para que dos matrices sean
iguales se deben cumplir dos condiciones: deben ser de igual orden (dimensiones) y sus elementos
correspondientes deben ser iguales.
public static boolean sonIguales (int[][] A, int[][] B) {
if(A[0].length == B[0].length && A.length == B.length){
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A.length; c++)
if(A[f][c] != B[f][c])
return false;
return true;
}
else
return false;
}
5. Un mtodo sumaMatrices que realice la adicin de dos matrices A y B en una tercera matriz C. Para
poder efectuar la adicin o sustraccin de dos matrices, ambas deben ser de igual orden (dimensiones).
public static int[][] sumaMatrices (int[][] A, int[][] B) {
int[][] C = new int[A.length][A[0].length];
if(A[0].length == B[0].length && A.length == B.length){
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A.length; c++)
C[f][c] = A[f][c] + B[f][c];
return C;
}
else{System.out.println("Las dimensiones no son iguales");
return C;
}
}
6. Un mtodo restaMatrices que realice la sustraccin de dos matrices A y B en una tercera matriz C.
Para poder efectuar la adicin o sustraccin de dos matrices, ambas deben ser de igual orden
(dimensiones).
public static int[][] restaMatrices (int[][] A, int[][] B) {
int[][] C = new int[A.length][A[0].length];
if(A[0].length == B[0].length && A.length == B.length){
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A.length; c++)
C[f][c] = A[f][c] - B[f][c];
return C;
}
else{System.out.println("Las dimensiones no son iguales");
return C;
}
}
Laboratorio de Algoritmos y Estructuras de Datos
Nro. DD-106
Pgina 3 de 5
7. Un mtodo transpuesta que permita retornar la transpuesta de una matriz A. La transpuesta de una
matriz A se denota como A
T
, y se define como aquella matriz que se obtiene intercambiando ntegramente
las filas por las columnas de la matriz original A. Por ejemplo:
(
(
(
=
1 2
0 1
3 2
A
(
=
1 0 3
2 1 2
T
A
public static int[][] transpuesta (int[][] A) {
int[][] At = new int[A[0].length][A.length];
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A.length; c++)
At[c][f] = A[f][c];
return At;
}
8. Un mtodo esTriangularSuperior que permita determinar si una matriz cuadrada A es triangular
superior. Una matriz es triangular superior si todos los elementos ubicados por debajo de la diagonal
principal son iguales a 0. Por ejemplo:
(
(
(
=
2 0 0
5 1 0
4 2 3
A
public static boolean esTriangularSuperior (int[][] A) {
for (int f = 0; f < A.length; f++)
for (int c = 0; c < A.length; c++)
if(f > c)
if(A[f][c] != 0)
return false;
return true;
}
9. Un mtodo esDiagonal que permita determinar si una matriz cuadrada A es diagonal. Una matriz es
diagonal si todos sus elementos fuera de la diagonal principal son iguales a 0. Por ejemplo:
(
(
(
=
2 0 0
0 1 0
0 0 3
A
public static boolean esDiagonal (int[][] A) {
for(int f = 0; f < A.length; f++)
for(int c = 0; c < A.length; c++)
if(f > c && f < c)
if(A[f][c] != 0)
return false;
return true;
}
Laboratorio de Algoritmos y Estructuras de Datos
Nro. DD-106
Pgina 4 de 5
10. Un mtodo esEscalar que permita determinar si una matriz cuadrada A es escalar. Una matriz es escalar
si es diagonal y adems todos los elementos de la diagonal principal son iguales a un nico nmero real
diferente a 0. Por ejemplo:
(
(
(
=
3 0 0
0 3 0
0 0 3
A
public static boolean esEscalar (int[][] A) {
for (int f = 0; f < A.length; f++){
for (int c = 0; c < A.length; c++){
if(f == c){
if(A[f][c] != A[0][0])
return false;
}else {if(A[f][c] != 0)
return false;
}
}
}
return true;
}
11. Un mtodo esIdentidad que permita determinar si una matriz cuadrada A es una matriz identidad. Una
matriz identidad es aquella matriz escalar, en la cual todos los elementos de la diagonal principal son
iguales a la unidad. Por ejemplo:
(
(
(
=
1 0 0
0 1 0
0 0 1
A
public static boolean esIdentidad (int[][] A) {
for (int f = 0; f < A.length; f++){
for (int c = 0; c < A.length; c++){
if(f == c){
if(A[f][c] != 1)
return false;
}else { if(A[f][c] != 0)
return false;
}
}
}
return true;
}
12. (Trabajo para casa) Un algoritmo que permita generar un cuadrado mgico en una matriz de orden m x m.
Un cuadrado mgico es aquel en el que la suma de los elementos de las columnas, las filas y las
diagonales dan el mismo resultado y m debe ser impar. Por ejemplo:
(
(
(
2 9 4
7 5 3
6 1 8
VIII.- OBSERVACIONES Y CONCLUSIONES
OBSERVACIONES:
- Podemos inicializar los elementos de una matriz multidimensional tal y como hacamos convectores:
int matriz[][]={{1, 2, 3 }, { 4, 5,6} }
- Para definir un array en java es como definir una variable o atributo, pero al especificar el tipo lo que hacemos
es colocar un par de corchetes [] para indicar que lo que estamos definiendo es un array.
Laboratorio de Algoritmos y Estructuras de Datos
Nro. DD-106
Pgina 5 de 5
CONCLUSIONES:
- El nmero mximo de dimensiones o de elementos depende de la memoria disponible (lmites establecidos por
el compilador).
- Mostrar una matriz en la pantalla de texto es difcil, ya que Java no dispone de una funcin que site el cursor
de texto en una posicin de la pantalla.
TAREA:
//CUADRADO MAGICO
import java.util.Scanner;
public class CuadradoMagico{
public static void main(String []args) throws InterruptedException{
Scanner SC=new Scanner(System.in);
int N;
do{System.out.print("\nIngrese el tamanio del cuadrado magico_: ");
N= SC.nextInt();
if(N % 2 == 0){
System.out.print("\n DEbe ingresar un numero impar ....");
Thread.sleep(1000);
}
}while(N % 2 ==0);
int A[][] = new int[N][N];
//metodo de Loubere para generar el cuadrado magico
int i=0, j=(int)(N/2);
for (int c = 1; c <= N*N; c++){
A[i][j] = c;
if(i == 0)
i = N-1;
else
i--;
if(j == N-1)
j = 0;
else
j++;
if(i == 0 && j == N-1){
A[i][j] = c + 1;
c = c+1;
i++;
j = N-1;
}
if(A[i][j] != 0){
i+=2;
j--;}
}
//mostrar el cuadrado magico
for (int f = 0; f < A.length; f++){
System.out.println();
for (int c = 0; c < A.length; c++){
System.out.print(A[f][c]+"\t");
}
System.out.println();
}
}
}