SumaMatricesComplejas.java_



import java.io.*;

class SumaMatricesComplejas
{
	public static void main(String A[])
        {
		Suma ObjetoSuma;
	NumeroComplejo A1 = new NumeroComplejo(2, 3);
	NumeroComplejo A2 = new NumeroComplejo(0, -1);
	NumeroComplejo A3 = new NumeroComplejo(0, 4);
	NumeroComplejo A4 = new NumeroComplejo();
	NumeroComplejo B1 = new NumeroComplejo(5, 0);
	NumeroComplejo B2 = new NumeroComplejo(-3, 0);
	NumeroComplejo B3 = new NumeroComplejo(-3, 2);
	NumeroComplejo B4 = new NumeroComplejo(1, -8);

	  NumeroComplejo NCA[][] = {{A1,A2}, {A3, A4}};
	  Matriz MatrizA = new Matriz(NCA);

	  NumeroComplejo NCB[][] = {{B1,B2}, {B3, B4}};
	  Matriz MatrizB = new Matriz(NCB);

	  ObjetoSuma = new Suma(MatrizA, MatrizB);
	  MatrizA.Suma(NCB);
	  MatrizA.Muestra(ObjetoSuma);
	}
}

class Matriz
{
	NumeroComplejo MNC[][] = new NumeroComplejo[2][2];
	Suma ObjetoSuma = new Suma();
	
	Matriz(NumeroComplejo MAT[][])
	{
		int r=0, c=0;
		
		for(r=0; r<2; r++)
			for(c=0; c<2; c++)
				MNC[r][c] = MAT[r][c];
	}

	void Muestra(Suma MNC)
	{
	  int r=0, c=0;
	  for(r=0; r<2; r++) for(c=0; c<2; c++)
  System.out.println("R("+r+","+c+")= "+MNC[r][c].Real+
			 " + j"+MNC[r][c].Imag);
				
	}

	void Suma(NumeroComplejo MAT[][])
	{
	  int r=0, c=0;
          for(r=0; r<2; r++)
	   for(c=0; c<2; c++)
	   {
	    // MNC[r][c].Suma(MAT[r][c].Real, MAT[r][c].Imag);
	   ObjetoSuma = new Suma(MAT[r][c].Real, MAT[r][c].Imag, MNC[r][c]);
	   MNC[r][c].Real = ObjetoSuma.RespR;
	   MNC[r][c].Imag = ObjetoSuma.RespI;
	   }
	}
}


class NumeroComplejo
{
	// Campos de la clase
	float Real;
	float Imag;
	Suma ObjetoSuma = new Suma();

	// Constructor -NombreMetodo = NobreDeLaClase-
	NumeroComplejo()
	{
		Real = 0;
		Imag = 0;
	}
	
	NumeroComplejo(float Real, float Imag)
	{
		this.Real = Real;
		this.Imag = Imag;
	}
}

class Suma
{
	float R=0, I=0;
	float RespR=0, RespI=0;
	NumeroComplejo MatR[][] = new NumeroComplejo[2][2];
	
	Suma(float R, float I, NumeroComplejo NC)
	{
		this.R = R;
		this.I = I;
		RespR = R + NC.Real;
		RespI = I + NC.Imag;
	}
	
	Suma() { R = I = RespR = RespI = 0; }

	Suma(Matriz MA, Matriz MB)
	{
	  int r=0, c=0;
	  
          for(r=0; r<2; r++)
	    for(c=0; c<2; c++)
	    {
                ObjetoSuma = new Suma(MAT[r][c].Real, MAT[r][c].Imag, MNC[r][c]);
		MatR[r][c].Real = ObjetoSuma.RespR;
		MatR[r][c].Imag = ObjetoSuma.RespI;
	    }
	}
}