<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">// Clase para manipular Matrices
// Antonio Carrillo Ledesma


public class Matriz &lt;T extends Numero&gt; {

   // Coeficientes de la Matriz
   private Numero [][] M;

   // Numero de Renglones
   private int ren;
   // Numero de Columnas
   private int col;

   // Constructor de la clase
   public Matriz() {
      col = 0;
      ren = 0;
   }


   // Asigna coeficientes
   public void asignaCoeficientes(Numero [][]coef) {
      int i, j;
      ren = coef.length;
      col = coef[0].length;
      M = new Numero[ren][col];
      for (i = 0; i &lt; ren; i++) {
         for (j = 0; j &lt; col; j++) {
            M[i][j] = coef[i][0].nuevo();
            M[i][j]  = coef[i][j];
         }
      }
   }


   // Retorna los coeficientes
   Numero coeficiente(int i, int j) {
      if (i &lt; 0 || i &gt;= ren || j &lt; 0 || j &gt;= col)  System.out.print("Error");
      return M[i][j];
   }


   // Retorna el numero de renglones
   int renglones() {
      return ren;
   }

   // Retorna el numero de columnas
   int columnas() {
      return col;
   }


   // Visualiza la Matriz
   public void visualiza() {
      int i, j;
      for (i = 0; i &lt; ren; i++) {
         for (j = 0; j &lt; col; j++) {
            M[i][j].visualiza();
            System.out.print(" ");
         }
         System.out.println("");
      }
   }

   // Visualiza la Matriz
   public void visualizaLN() {
      visualiza();
      System.out.println("");
   }


   // Suma con dos operandos
   public void suma(Matriz a, Matriz b) {
      int i, j;
      ren = 0;
      col = 0;

      // Revisa el tamano de las Matrices a sumar
      if(a.renglones() != b.renglones() || a.columnas() != b.columnas()) {
         System.out.println("Error, las dimensiones no son iguales");
      } else {
         // Solicita memoria para la Matriz resultante
         ren = a.renglones();
         col = a.columnas();
         M = new Numero[ren][col];

         for (i = 0; i &lt; ren; i++) {
            for (j = 0; j &lt; col; j++) {
               M[i][j] = a.coeficiente(i, j).nuevo();
               M[i][j].suma(a.coeficiente(i, j), b.coeficiente(i, j));
            }
         }
      }
   }


   // Suma con un operando
   public void suma(Matriz a) {
      int i, j;
      ren = 0;
      col = 0;

      // Revisa el tamano de las Matrices a sumar
      if(renglones() != a.renglones() || columnas() != a.columnas()) {
         System.out.println("Error, las dimensiones no son iguales");
      } else {
         // Solicita memoria para la Matriz resultante

         for (i = 0; i &lt; ren; i++) {
            for (j = 0; j &lt; col; j++) {
               M[i][j].suma(a.coeficiente(i, j));
            }
         }
      }
   }


   // Funcion Principal ....
   public static void main(String[] args) {

      // Ejemplito para Matrices de coeficientes Double
      Double [][]r = new Double[2][2];
      r[0][0] = new Double(1);
      r[1][0] = new Double(2);
      r[0][1] = new Double(3);
      r[1][1] = new Double(4);
      Double [][]s = new Double[2][2];
      s[0][0] = new Double(5);
      s[1][0] = new Double(6);
      s[0][1] = new Double(7);
      s[1][1] = new Double(7);

      Matriz&lt;Double&gt; R = new Matriz&lt;Double&gt; ();
      R.asignaCoeficientes(r);
      Matriz&lt;Double&gt; S = new Matriz&lt;Double&gt; ();
      S.asignaCoeficientes(s);
      Matriz&lt;Double&gt; TT = new Matriz&lt;Double&gt; ();

      System.out.println("Double");
      R.visualizaLN();
      System.out.println("+");
      S.visualizaLN();
      TT.suma(R, S);
      System.out.println("=====================");
      TT.visualizaLN();
      System.out.println("");
      System.out.println("");



      // Ejemplito para Matrices de coeficientes Fraccion
      Fraccion [][]a = new Fraccion[2][2];
      a[0][0] = new Fraccion(1, 2);
      a[1][0] = new Fraccion(2, 2);
      a[0][1] = new Fraccion(3, 2);
      a[1][1] = new Fraccion(3, 2);
      Fraccion [][]b = new Fraccion[2][2];
      b[0][0] = new Fraccion(1, 3);
      b[1][0] = new Fraccion(2, 3);
      b[0][1] = new Fraccion(3, 3);
      b[1][1] = new Fraccion(3, 3);

      Matriz&lt;Fraccion&gt; A = new Matriz&lt;Fraccion&gt; ();
      A.asignaCoeficientes(a);
      Matriz&lt;Fraccion&gt; B = new Matriz&lt;Fraccion&gt; ();
      B.asignaCoeficientes(b);
      Matriz&lt;Fraccion&gt; C = new Matriz&lt;Fraccion&gt; ();

      System.out.println("Fraccion");
      A.visualizaLN();
      System.out.println("+");
      B.visualizaLN();
      C.suma(A, B);
      System.out.println("=====================");
      C.visualizaLN();
      System.out.println("");
      System.out.println("");



      // Ejemplito de Matrices de coeficionets Complejos
      Complejos [][]x = new Complejos[2][2];
      x[0][0] = new Complejos(2, 3);
      x[1][0] = new Complejos(2, 2);
      x[0][1] = new Complejos(3, 2);
      x[1][1] = new Complejos(3, 2);
      Complejos [][]y = new Complejos[2][2];
      y[0][0] = new Complejos(-2, -3);
      y[1][0] = new Complejos(2, 3);
      y[0][1] = new Complejos(3, 3);
      y[1][1] = new Complejos(3, 3);
      Matriz&lt;Complejos&gt; X = new Matriz&lt;Complejos&gt;();
      X.asignaCoeficientes(x);
      Matriz&lt;Complejos&gt; Y = new Matriz&lt;Complejos&gt;();
      Y.asignaCoeficientes(y);
      Matriz&lt;Complejos&gt; Z = new Matriz&lt;Complejos&gt;();

      System.out.println("Complejo");
      X.visualizaLN();
      System.out.println("+");
      Y.visualizaLN();
      Z.suma(X, Y);
      System.out.println("=====================");
      Z.visualizaLN();
      System.out.println("");
      System.out.println("");



      // Ejemplito de Matrices de coeficionets ComplejoFraccionario
      ComplejoFraccionario [][]xx = new ComplejoFraccionario[2][2];
      xx[0][0] = new ComplejoFraccionario(2, 3, 4, 5);
      xx[1][0] = new ComplejoFraccionario(2, 2, 3, 7);
      xx[0][1] = new ComplejoFraccionario(3, 2);
      xx[1][1] = new ComplejoFraccionario(3, 2);
      ComplejoFraccionario [][]xy = new ComplejoFraccionario[2][2];
      xy[0][0] = new ComplejoFraccionario(-2, 3, 5, 6);
      xy[1][0] = new ComplejoFraccionario(2, 3, 7, 9);
      xy[0][1] = new ComplejoFraccionario(3, 3);
      xy[1][1] = new ComplejoFraccionario(3, 3);
      Matriz&lt;ComplejoFraccionario&gt; xX = new Matriz&lt;ComplejoFraccionario&gt;();
      xX.asignaCoeficientes(xx);
      Matriz&lt;ComplejoFraccionario&gt; xY = new Matriz&lt;ComplejoFraccionario&gt;();
      xY.asignaCoeficientes(xy);
      Matriz&lt;ComplejoFraccionario&gt; xZ = new Matriz&lt;ComplejoFraccionario&gt;();

      System.out.println("Complejo Fraccionario");
      xX.visualizaLN();
      System.out.println("+");
      xY.visualizaLN();
      xZ.suma(xX, xY);
      System.out.println("=====================");
      xZ.visualizaLN();
      System.out.println("");
      System.out.println("");

   }
}


</pre></body></html>