import java.util.Scanner;

public class TablaDeOperadores
{
  public static void main(String args[])
  {
    Scanner teclado = new Scanner(System.in);
    double valormin = 0.0;
    double valormax = 0.0;
    double incremento = 0.0;
    int operador = 0;
    String opcion = "";
    
    do
    {
      System.out.println("\nTablas de operadores");
      System.out.print("Operador: [+ | -  | * | / | % | Salir]");
      opcion = teclado.nextLine();
      
      switch (opcion)
      {
        case "+":
          operador = 1;
          break;
        case "-":
          operador = 2;
          break;
        case "*":
          operador = 3;
          break;
        case "/":
          operador = 4;
          break;
        case "%":
          operador = 5;
          break;
          //default se utiliza en caso de que el usuario ingrese cualquier cosa que no este definida en los cases
        default:
          operador = 0;
          break;
      }
      //operador = teclado.nextInt();
      
      if (operador == 0)
        break;
      
      System.out.print("Valor minimo: ");
      valormin = teclado.nextDouble();
      
      System.out.print("Valor maximo: ");
      valormax = teclado.nextDouble();
      
      System.out.print("Incremento: ");
      incremento = teclado.nextDouble();
      while (incremento <= 0)
      {
        System.out.print("Incremento: ");
        incremento = teclado.nextDouble();
      }
      
      
      switch (operador)
      {
        case 1:
        {
          System.out.print("  +    | ");
          for (double m = valormin; m <= valormax; m=m+incremento)
          {
            System.out.printf("%4.2f  ", m);
          }
          System.out.println("\n-------------------------------------------------------------------");
          for(double i = valormin; i <= valormax; i=i+incremento)
          {
            System.out.printf("%4.2f  | ", i);
            for (double j = valormin; j <= valormax; j=j+incremento)
            {
              System.out.printf("%4.2f  ", i+j);
            }
            System.out.println("");
          }
          break;
        }
        
        case 2:
        {
          System.out.print(" -    | ");
          for (double m = valormin; m <= valormax; m=m+incremento)
          {
            System.out.printf("%4.2f  ", m);
          }
          System.out.println("\n-------------------------------------------------------------------");
          for(double i = valormin; i <= valormax; i=i+incremento)
          {
            System.out.printf("%4.2f  | ", i);
            for (double j = valormin; j <= valormax; j=j+incremento)
            {
              System.out.printf("%4.2f  ", i-j);
            }
            System.out.println("");
          }
          break;
        }
        
        case 3:
        {
          System.out.print(" *    | ");
          for (double m = valormin; m <= valormax; m=m+incremento)
          {
            System.out.printf("%4.2f  ", m);
          }
          System.out.println("\n-------------------------------------------------------------------");
          for(double i = valormin; i <= valormax; i=i+incremento)
          {
            System.out.printf("%4.2f  | ", i);
            for (double j = valormin; j <= valormax; j=j+incremento)
            {
              System.out.printf("%4.2f  ", i*j);
            }
            System.out.println("");
          }
          break;
        }
        
        case 4:
        {
          System.out.print(" /    | ");
          for (double m = valormin; m <= valormax; m=m+incremento)
          {
            System.out.printf("%4.2f  ", m);
          }
          System.out.println("\n-------------------------------------------------------------------");
          for(double i = valormin; i <= valormax; i=i+incremento)
          {
            System.out.printf("%4.2f  | ", i);
            for (double j = valormin; j <= valormax; j=j+incremento)
            {
              System.out.printf("%4.2f  ", i/j);
            }
            System.out.println("");
          }
          break;
        }
        
        case 5:
        {
          System.out.print(" %    | ");
          for (double m = valormin; m <= valormax; m=m+incremento)
          {
            System.out.printf("%4.2f  ", m);
          }
          System.out.println("\n-------------------------------------------------------------------");
          for(double i = valormin; i <= valormax; i=i+incremento)
          {
            System.out.printf("%4.2f  | ", i);
            for (double j = valormin; j <= valormax; j=j+incremento)
            {
              System.out.printf("%4.2f  ", i%j);
            }
            System.out.println("");
          }
          break;
        }
      }
      teclado.nextLine();
    }
    while (operador > 0 && operador <= 5);
  }
}





