// Bosquejo de un programa para manipular complejos
// Autor: Antonio Carrillo Ledesma
// http://mmc.geofisica.unam.mx/acl/


public class Complejos {
   // Parte real del complejo
   private double R;
   // Parte imaginaria del complejo
   private double I;


   // Constructores
   public Complejos() {
      R = 0;
      I = 0;
   }

   // Constructores
   public Complejos(double r, double i) {
      R = r;
      I = i;
   }


   // Constructores
   public Complejos(double r) {
      R = r;
      I = 0;
   }

   // Constructores
   public Complejos(Complejos a) {
      R = a.parteReal();
      I = a.parteImaginaria();
   }


   // Retorna la parte real del complejo
   public double parteReal() {
      return R;
   }

   // Retorna la parte imaginaria del complejo
   public double parteImaginaria() {
      return I;
   }

   // Suma con un operando
   public void suma(Complejos a) {
      R = parteReal() + a.parteReal();
      I = parteImaginaria() + a.parteImaginaria();
   }

   // Suma con dos operandos
   public void suma(Complejos a, Complejos b) {
      R = a.parteReal() + b.parteReal();
      I = a.parteImaginaria() + b.parteImaginaria();
   }

   // Visualiza el complejo
   public void visualiza() {
      System.out.print(R);
      if(I >= 0) System.out.print("+");
      System.out.print(I);
      System.out.print("i");
   }

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


   // Ejemplito de uso ...
   public static void main(String[] args) {
      Complejos a, b, c;
      a = new Complejos(2, 4);
      b = new Complejos(5);
      c = new Complejos();


      System.out.println("Suma de dos operandos");
      a.visualiza();
      System.out.print(" + ");
      b.visualiza();
      System.out.print(" = ");
      c.suma(a, b);
      c.visualizaLN();


      System.out.println("Suma de un operando");
      a.visualiza();
      System.out.print(" + ");
      b.visualiza();
      System.out.print(" = ");
      a.suma(b);
      a.visualizaLN();
   }


};