Lab 13 JONaG

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

REDES Y COMUNICACIONES DE DATOS

PROGRAMA DE FORMACIN REGULAR


ALGORITMOS Y ESTRUCTURAS DE DATOS

LABORATORIO N 13

ARREGLOS BIDIMENSIONALES
(MATRICES)






















CODIGO DEL CURSO: R66218






Alumno(s) Nota
GARCIA
FERNANDEZ
JONATHAN
Grupo G
Ciclo II
Fecha de entrega





Laboratorio de Algoritmos y Estructuras de Datos
Nro. DD-106
Pgina 1 de 5


I.- OBJETIVOS:
- Definir arreglos de dos dimensiones (matrices) en Java.
- Trabajar con los elementos de una matriz en Java.

II.- SEGURIDAD:

Advertencia:
En este laboratorio est prohibida la manipulacin del
hardware, conexiones elctricas o de red; as como la ingestin
de alimentos o bebidas.

III.- FUNDAMENTO TERICO:

Importante. Dentro de la carpeta D:\Java, verifique que tiene una carpeta identificada con su nombre y
apellido. En esta carpeta debe crear los proyectos de los laboratorios. Si no existe la carpeta, crela.

- Los procedimientos de creacin de proyectos se encuentran detallados en la gua de laboratorio de la
segunda semana.

IV.- NORMAS EMPLEADAS:
No aplica

V.- RECURSOS:
- En este laboratorio cada alumno trabajar con un equipo con Windows XP.
- Este equipo cuenta con JDK instalado, as como alguno de los IDE (Entorno de Desarrollo Integrado)
como Eclipse o NetBeans.

VI.- METODOLOGA PARA EL DESARROLLO DE LA TAREA:
- El desarrollo del laboratorio es en grupo de dos personas.


VII.- PROCEDIMIENTO:

1. Cree el proyecto 13_Matrices en su carpeta de trabajo.

2. Cree la clase Matrices que contenga un mtodo main.
public class Matrices {
public static void main(String[] args) {
int[][] num1 = new int[5][5];
int[][] num2 = new int[5][5]; //para usar ms adelante en las pruebas
for (int fil = 0; fil < 5; fil++)
for (int col = 0; col < 5; col++)
num1[fil][col] = (int) Math.round(Math.random());
}
}

Sea A la matriz de orden m x n, es decir, consta de m filas y n columnas. Dicha matriz se representa de la
siguiente manera:

n m
a a a a
a a a a
a a a a
a a a a
A
mn m m m
n
n
n

(
(
(
(
(
(

=
...
... ...
...
...
...
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();
}
}
}

También podría gustarte