import java.util.Scanner;

public class Examen02
{
   public static void main(String args[])
   {
      System.out.println("Propiedades de dos rectas");
      Scanner teclado = new Scanner(System.in);

      Vector vector1 = null;
      Vector vector2 = new Vector();
      for (long contador = 1; ; ++contador)
      {
         System.out.println("\nVector " + contador);
         if ( ! vector2.leer() )
            return;
         System.out.println(vector2);

         if ( vector1 != null )
         {  
  System.out.println("V1 + V2: (x,y) = (" + vector1.sumax(vector2)  + ", "  
          + vector1.sumay(vector2) + ")"); 
  System.out.println("V1 - V2: (x,y) = (" + vector1.restax(vector2)  + ", "  + vector1.restay(vector2) + ")"); 
  System.out.println("V2 - V1: (x,y) = (" + vector1.restax1(vector2)  + ", "  + vector1.restay1(vector2) + ")");         
         }
         vector1 = vector2;
         vector2 = new Vector();
      }
   }
}

public class Vector
{
   private double x = 0.0;
   private double y = 0.0;
   private static Scanner teclado = new Scanner(System.in);
   
   public boolean leer()
   {
      System.out.print("x: ");
      x = teclado.nextDouble();
      System.out.print("y: ");
      y = teclado.nextDouble();
      if (x!=0 && y!=0)
        return true;
      else 
        return false;
   }
   
   public double r()
   {
     return Math.sqrt(x*x+y*y);
   }
   
   public double o()
   {
     return Math.atan2(y,x);
   }
   
   public String toString()
   {
      return String.format( "V: (x,y) = (" + x + ", "  + y + "): (r,0); = (" + r() + ", " + o() + ")");
   }
 
   public double sumax(Vector otra)
   {  
      return x + otra.x; 
   }
 
   public double sumay(Vector otra)
   {  
      return y + otra.y; 
   }
   
    public double restax(Vector otra)
   {  
      return x - otra.x; 
   }
 
   public double restay(Vector otra)
   {  
      return y - otra.y; 
   }
   
   public double restax1(Vector otra)
   {  
      return otra.x - x; 
   }
 
   public double restay1(Vector otra)
   {  
      return  otra.y  - y; 
   }
   
    public double rsuma(Vector otra)
   {
     return Math.sqrt((x + otra.x)*(x + otra.x)+(y + otra.y)*(y + otra.y));
   }
   
   public double osuma(Vector otra)
   {
     return Math.atan2((y + otra.y),(x + otra.x));
   }
   
   public double rresta(Vector otra)
   {
     return Math.sqrt((x - otra.x)*(x - otra.x)+(y - otra.y)*(y - otra.y));
   }
   
   public double oresta(Vector otra)
   {
     return Math.atan2((y - otra.y),(x - otra.x));
   }
   
   public double rresta1(Vector otra)
   {
     return Math.sqrt((otra.x - x)*(otra.x - x)+(otra.y - y)*(otra.y  - y));
   }
   
   public double oresta1(Vector otra)
   {
     return Math.atan2((y - otra.y),(x - otra.x));
   }
   
   
}