/*Jose Pablo Saborio Hidalgo
 * A65134
 */

import java.util.Scanner;

public class TablasDeOperadores 
{
  
  
  public static void main(String[] args) 
  { 
    
    Scanner teclado=new Scanner(System.in);
    
    System.out.println("Tablas de Operadores:");
    boolean condicion=true;
    
    while(condicion==true)
    {   
      System.out.print("Operador [1=+ 2=- 3=* 4=/ 5=% 0=Salir]:");
      int opcion= teclado.nextInt();
      if (opcion==0)
      {  
        System.out.println();
        condicion=false;
      }
      else 
      {     
        System.out.print("Valor minimo:");
        double minimo= teclado.nextDouble();
        System.out.print("Valor maximo:");
        double maximo= teclado.nextDouble();
        System.out.print("Incremento:");
        double incremento= teclado.nextDouble();
        
        String guion="--";
        double detener=incremento;
        
        while(detener<=0)
        { 
          System.out.print("Incremento:");
          incremento= teclado.nextDouble();
          detener=incremento;
        }
        
        double numero=minimo;
        
        switch(opcion)
        { 
          
          
          case 1:
          {   
            String operacion="+ |";
            System.out.printf("%8s ",operacion);
            for (double i= minimo; i<=maximo; i+=incremento)
            {
              System.out.printf("%6.1f",i );
            }
            System.out.println();
            
            for (double m=1; m<=8+maximo; m+=incremento)
            {
              System.out.printf("%1s ",guion);
            }
            System.out.println();
            
            System.out.printf("%6.1f | ",minimo);
            
            for (double i= minimo; i<=maximo; i+=incremento)
            {    
              double suma= minimo+numero;
              System.out.printf("%6.1f",suma);
              numero+=incremento;
            }
            System.out.println();
            
            for (double j= minimo; j<=maximo; j+=incremento)
            {
              double num=incremento+j;
              if (num<=maximo)
              { 
                System.out.printf("%6.1f | ",num);
                for (double k= minimo; k<=maximo; k+=incremento)
                  
                {   
                  double suma= minimo+num;
                  System.out.printf("%6.1f",suma);
                  num+=incremento;
                }
                System.out.println();
              }
            }
            break;
          }
          
          case 2:
          {   
            String operacion="- |";
            System.out.printf("%8s ",operacion);
            for (double i= minimo; i<=maximo; i+=incremento)
            {
              System.out.printf("%6.1f",i );
            }
            System.out.println();
            
            for (double m=1; m<=8+maximo; m+=incremento)
            {
              System.out.printf("%1s ",guion);
            }
            System.out.println();
            
            System.out.printf("%6.1f | ",minimo);
            
            for (double i= minimo; i<=maximo; i+=incremento)
            {    
              double resta= minimo-numero;
              System.out.printf("%6.1f",resta);
              numero+=incremento;
            }
            System.out.println();
            
            for (double j= 1; j<=(maximo); j+=incremento)
            {
              double num=incremento+j;
              if (num<=maximo)
              { 
                System.out.printf("%6.1f | ",num);
                
                for (double k= 1; k<=maximo; k+=incremento)
                {   
                  double resta= num-minimo;
                  System.out.printf("%6.1f",resta);
                  minimo+=incremento;
                }
                
                System.out.println();
              }
            }
            break;
          }
          
          case 3:
          {  
            String operacion="* |";
            System.out.printf("%8s ",operacion);
            for (double i= minimo; i<=maximo; i+=incremento)
            {
              System.out.printf("%6.1f",i );
            }
            System.out.println();
            
            for (double m=1; m<=8+maximo; m+=incremento)
            {
              System.out.printf("%1s ",guion);
            }
            System.out.println();
            
            System.out.printf("%6.1f | ",minimo);
            
            for (double i= minimo; i<=maximo; i+=incremento)
            {    
              double multiplicacion= minimo*numero;
              System.out.printf("%6.1f",multiplicacion);
              numero+=incremento;
            }
            System.out.println();
            
            for (double j= minimo; j<=(maximo); j+=incremento)
            {
              double num=incremento+j;
              if (num<=maximo)
              { 
                System.out.printf("%6.1f | ",num);
                
                for (double k= 1; k<=maximo; k+=incremento)
                {   
                  double multiplicacion= num*minimo;
                  System.out.printf("%6.1f",multiplicacion);
                  minimo+=incremento;
                }
                
                System.out.println();
              }
            }
            break;
          }
          
          case 4:
          {  
            String operacion="/ |";
            System.out.printf("%8s ",operacion);
            for (double i= minimo; i<=maximo; i+=incremento)
            {
              System.out.printf("%6.1f",i );
            }
            System.out.println();
            
            for (double m=1; m<=8+maximo; m+=incremento)
            {
              System.out.printf("%1s ",guion);
            }
            System.out.println();
            
            System.out.printf("%6.1f | ",minimo);
            
            for (double i= minimo; i<=maximo; i+=incremento)
            {    
              double division= minimo/numero;
              System.out.printf("%6.1f",division);
              numero+=incremento;
            }
            System.out.println();
            
            for (double j= minimo; j<=(maximo); j+=incremento)
            {
              double num=incremento+j;
              if (num<=maximo)
              { 
                System.out.printf("%6.1f | ",num);
                
                for (double k= 1; k<=maximo; k+=incremento)
                {   
                  double division= num/minimo;
                  System.out.printf("%6.1f",division);
                  minimo+=incremento;
                }
                
                System.out.println();
              }
            }
            break;
          }
          case 5:
          {  
            String operacion="% |";
            System.out.printf("%8s ",operacion);
            for (double i= minimo; i<=maximo; i+=incremento)
            {
              System.out.printf("%6.1f",i );
            }
            System.out.println();
            
            for (double m=1; m<=8+maximo; m+=incremento)
            {
              System.out.printf("%1s ",guion);
            }
            System.out.println();
            
            System.out.printf("%6.1f | ",minimo);
            
            for (double i= minimo; i<=maximo; i+=incremento)
            {    
              double modulo= minimo%numero;
              System.out.printf("%6.1f",modulo);
              numero+=incremento;
            }
            System.out.println();
            
            for (double j= minimo; j<=(maximo); j+=incremento)
            {
              double num=incremento+j;
              if (num<=maximo)
              { 
                System.out.printf("%6.1f | ",num);
                
                for (double k= 1; k<=maximo; k+=incremento)
                {   
                  double modulo= num%minimo;
                  System.out.printf("%6.1f",modulo);
                  minimo+=incremento;
                }
                
                System.out.println();
              }
            }
            break;
          }  
        } 
      }
    } 
  }
}



