1 / 31

Arreglos de 2 dimensiones TDA Matriz

Arreglos de 2 dimensiones TDA Matriz.

magar
Télécharger la présentation

Arreglos de 2 dimensiones TDA Matriz

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arreglos de 2 dimensionesTDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular el producto de un escalar por una matriz, la suma de dos matrices, establecer la matriz identidad, decidir si un matriz es cuadrada, decidir si una matriz es la matriz identidad, decidir si es una matriz simétrica. La matriz se representa mediante un arreglo de dos dimensiones de números reales. La clase que encapsula al arreglo brinda operaciones para establecer y obtener un elemento y para comparar, copiar y clonar matrices. Introducción a la Programación Orientada a Objetos

  2. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 Matriz m1; … m1.obtenerElem (1,3); public float obtenerElem (int f,int c){ return mr[f][c]; } Introducción a la Programación Orientada a Objetos

  3. Arreglos de 2 dimensionesTDA Matriz Matriz real [] [] mr <<constructores>> Matriz (fMax,cMax : entero) <<comandos>> establecerElem (f,c : entero, elem : real) copy(m : Matriz) establecerIdentidad () invertirFilas(f1,f2:entero) xEscalar(r:real) Asume que la posición es válida Asume que se verificó que la matriz es cuadrada Asume que se verificó que f1 y f2 son válidas Las operaciones marcadas en azul se implementarán en el laboratorio. Las operaciones marcadas en rojo son ejercicios para la práctica Introducción a la Programación Orientada a Objetos

  4. Arreglos de 2 dimensionesTDA Matriz Matriz real [] [] mr <<consultas>> existePos(f,c : entero) : boolean obtenerNFil () : entero obtenerNCol () : entero obtenerElem (f,c : entero) : real clone() :Matriz equals(m:Matriz): boolean esCuadrada () : boolean esIdentidad():boolean esTriangularSuperior():boolean esSimetrica():boolean esRala():boolean Asume que la posición es válida Más de la mitad de los elementos son 0 Introducción a la Programación Orientada a Objetos

  5. Arreglos de 2 dimensionesTDA Matriz Matriz real [] [] mr <<consultas>> cantElem (elem : real) : entero estaElem(elem : real) : boolean mayorElemento () : real filaMayorElemento () : entero vectorMayores () :Vector suma (m:Matriz) : Matriz producto(m:Matriz):Matriz transpuesta():Matriz Genera un vector con el mayor elemento de cada fila Asume que se controlaron filas y col Introducción a la Programación Orientada a Objetos

  6. Arreglos de 2 dimensionesTDA Matriz Establecer casos de prueba adecuados para cada consulta y comando. Introducción a la Programación Orientada a Objetos

  7. Arreglos de 2 dimensionesTDA Matriz public class Matriz { private float[][] mr; \\ Constructor public Matriz(intnfil,intncol){ mr=new float[nfil][ncol]; } Introducción a la Programación Orientada a Objetos

  8. Arreglos de 2 dimensionesTDA Matriz public int obtenerNfil () { return mr.length; } public int obtenerNcol () { return mr[0].length; } Introducción a la Programación Orientada a Objetos

  9. Arreglos de 2 dimensionesTDA Matriz public booleanexistePos(int f, int c) { return (f>=0 && f < obtenerNfil()) && (c>=0 && c < obtenerNCol()); } public float obtenerElem(intf,int c){ \\ Asume que la posición es válida return mr[f][c]; } Introducción a la Programación Orientada a Objetos

  10. Arreglos de 2 dimensionesTDA Matriz \\ Comandos public void establecerElemento (intf,int c, float x) { \\Asume que la posición es válida mr[f][c]= x; } Introducción a la Programación Orientada a Objetos

  11. Arreglos de 2 dimensionesTDA Matriz public void establecerIdentidad () { iniMatriz(); for (int j=0;j<obtenerNcol();j++) mr[j][j] = 1; } Introducción a la Programación Orientada a Objetos

  12. Arreglos de 2 dimensionesTDA Matriz public void iniMatriz () { for (int i=0;i<obtenerNfil();i++) for (int j=0;j<obtenerNcol();j++) mr[i][j] = 0; } Introducción a la Programación Orientada a Objetos

  13. Arreglos de 2 dimensionesTDA Matriz public void establecerIdentidad () { for (int i=0;i<obtenerNfil();i++) for (int j=0;j<obtenerNcol();j++) if (i==j) mr[i][j] = 1; else mr[i][j] = 0; } Introducción a la Programación Orientada a Objetos

  14. Arreglos de 2 dimensionesTDA Matriz Producto de matriz por escalar. para cada posición i,j mri,j = mri,j*r 0 1 0 1 r=3 0 1 2 0 1 2 2 0 6 0 -1 -3 -3 -9 1 2 3 6 Introducción a la Programación Orientada a Objetos

  15. Arreglos de 2 dimensionesTDA Matriz para cada posición i,j mri,j = mri,j*r public void xEscalar (float r) { for (int i=0;i<obtenerNfil();i++) for (int j=0;j<obtenerNcol();j++) mr[i][j] = mr[i][j] * r; } Introducción a la Programación Orientada a Objetos

  16. Arreglos de 2 dimensionesTDA Matriz public void copy (Matriz m) { mr = new float[m.obtenerNfil()][m.obtenerNcol()]; for (int i=0;i<obtenerNfil();i++) { for (int j=0;j<obtenerNcol();j++) mr[i][j] = m.obtenerElem(i,j); }; } Introducción a la Programación Orientada a Objetos

  17. Arreglos de 2 dimensionesTDA Matriz public int cantElem (float ele) { int cant = 0; for (int i=0;i< obtenerNfil();i++) for (int j=0;j< obtenerNcol();j++) if (mr[i][j] == ele) cant++ ; return cant; } Introducción a la Programación Orientada a Objetos

  18. Arreglos de 2 dimensionesTDA Matriz public boolean estaElemento (float ele){ boolean hay= false; int i = 0; while (i<obtenerNfil() && !hay){ int j = 0; while (j < obtenerNcol()&& !hay){ hay = (mr[i][j] == ele); j++ ; } i++; } return hay; } Introducción a la Programación Orientada a Objetos

  19. Arreglos de 2 dimensionesTDA Matriz public boolean esCuadrada () { return (obtenerNfil() == obtenerNcol()) ; } Introducción a la Programación Orientada a Objetos

  20. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 3 4 5 esIdentidad(n) Introducción a la Programación Orientada a Objetos

  21. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 3 4 5 esIdentidad(n) Introducción a la Programación Orientada a Objetos

  22. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 3 4 5 esIdentidad(n) Introducción a la Programación Orientada a Objetos

  23. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 1 esIdentidad(n) Introducción a la Programación Orientada a Objetos

  24. Arreglos de 2 dimensionesTDA Matriz 0 1 2 3 4 5 0 1 2 3 4 5 Introducción a la Programación Orientada a Objetos

  25. Arreglos de 2 dimensionesTDA Matriz Algoritmo esIdentidad(n) Caso trivial Una matriz m de nxn con n = 1 es la matriz identidad si su único elemento es 1 Caso recursivo Una matriz m de nxn con n > 1 es la matriz identidad si m[i,n-1] = 0 para 0<= i < n-1 m[n-1,j] = 0 para 0<= j < n-1 m[n-1,n-1] = 1 y la matriz m’ de (n-1)x(n-1) es la matriz identidad Introducción a la Programación Orientada a Objetos

  26. Arreglos de 2 dimensionesTDA Matriz public boolean esIdent () { if (!esCuadrada()) return false; else return esIdentidad(obtNfil()); } private boolean esIdentidad (int n) { if (n == 0) return (mr[0][0] == 1); else return (mr[n-1][n-1] == 1 && esCeroFila(n-1) && esCeroColumna(n-1)&& esIdentidad(n-1)); } Introducción a la Programación Orientada a Objetos

  27. Arreglos de 2 dimensionesTDA Matriz public Matriz sumaMatriz (Matriz m) { } suma=new Matriz (obtNFil(),obtNCol()); … return suma; 0 1 0 1 0 1 0 1 2 2 0 0 1 2 5 0 0 1 2 3 0 -1 -3 -4 -4 -3 -1 1 2 4 3 3 1 Introducción a la Programación Orientada a Objetos

  28. Arreglos de 2 dimensionesTDA Matriz public class Matriz { private float[][] mr; \\ Constructor public Matriz (int nfil,int ncol){ mr =new float[nfil][ncol]; } Introducción a la Programación Orientada a Objetos

  29. Administración de Memoria mr /≡ float [][] mr; Se declara una variable mr que referenciará a un objeto de la clase array con componentes de tipo array con componentes de tipo float. Introducción a la Programación Orientada a Objetos

  30. Administración de Memoria mr 3 3 3 3 3 5 length mr = new float[5][3]; Introducción a la Programación Orientada a Objetos

  31. Administración de Memoria 3 mr 3 3 m1 3 3 5 length m1 = new Matriz(5,3); Introducción a la Programación Orientada a Objetos

More Related