// Clase para manipular vectores
// Antonio Carrillo Ledesma


public class Vector {

   // Coeficientes del vector
   private double []C;

   // Guarda la dimension del arreglo de coeficientes
   private int Dim;


   // Constructor de la clase
   public Vector() {
      Dim = 0;
   }

   // Asigna coeficientes
   public Vector(double []coef) {
      int i, n = coef.length;
      C = new double[n];
      Dim = n;
      for (i = 0; i < n; i++) C[i]  = coef[i];
   }


   // Retorna los coeficientes
   public double coeficiente(int i) {
      if (i >= Dim)  {
         System.out.print("Error");
         return 0;
      }
      return C[i];
   }


   // Retorna la dimension del arreglo de coeficientes
   public int dimension() {
      return Dim;
   }


   // Visualiza el vector
   public void visualiza() {
      int i;
      System.out.print("(");
      for (i = 0; i < Dim; i++) {
         System.out.print(C[i]);
         if(i < Dim - 1) System.out.print(", ");
      }
      System.out.print(")");
   }

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


   // Suma con dos operandos
   public void suma(Vector a, Vector b) {
      int i;
      Dim = 0;

      // Revisa el tamano de los vectores a sumar
      if(a.dimension() != b.dimension()) {
         System.out.println("Error, las dimensiones no son iguales");
      } else {
         // Solicita memoria para los coeficientes del vector resultante
         Dim = a.dimension();
         C = new double[Dim];
         // Realiza la suma entre los coeficientes comunes
         for (i = 0; i < Dim; i++)  C[i] = a.coeficiente(i) + b.coeficiente(i);
      }
   }


   // Suma con un operando
   public void suma(Vector a) {
      int i;

      // Revisa el tamano de los vectores a sumar
      if(dimension() != a.dimension()) {
         System.out.println("Error, las dimensiones no son iguales");
      } else {
         // Realiza la suma entre los coeficientes comunes
         for (i = 0; i < Dim; i++)  C[i] += a.coeficiente(i);
      }
   }




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

      double a[] = {3.0, -4.0, 1.5};
      double b[] = {1.0, 1.0, 2.0};
      double c[] = {1.0, 3.0, -3.0};

      Vector A = new Vector(a);
      Vector B = new Vector(b);
      Vector C = new Vector(c);
      System.out.println("Suma con un operando:");
      C.visualizaLN();
      A.visualizaLN();
      C.suma(A);
      C.visualizaLN();

      System.out.println("Suma con dos operandos:");
      A.visualizaLN();
      B.visualizaLN();
      C.suma(A, B);
      C.visualizaLN();
   }
}


