//Esteban Padilla Huete [07-feb-2013] 
import java.util.Scanner;
public class ExamenTablasDeOperadores
{
  public static void main(String args[])
  {
    Scanner teclado = new Scanner(System.in);
    System.out.println("Tablas de operadores");
    
    System.out.print("operador [1=+ 2=- 3=* 4=/ 5=% 0=Salida]:");
    int selecOperador=teclado.nextInt();
    int j=1;
    
    while (selecOperador!=0)
    {
      
      if (j>1)
      {
        System.out.print("operador [1=+ 2=- 3=* 4=/ 5=% 0=Salida]:");
        selecOperador=teclado.nextInt();
      }
      j=j+1;
      while (selecOperador<0 ||selecOperador>5)
      {
        System.err.println("opcion no válida");
        System.out.println("operador [1=+ 2=- 3=* 4=/ 5=% 0=Salida]:");
        selecOperador=teclado.nextInt();
      }
      double min=0.0;
      double max=0.0;
      double incre=0.0;
      
      if(selecOperador!=0)
      {
      System.out.print("Valor mínimo: ");    
      min=teclado.nextInt();
      System.out.print("Valor máximo: ");
      max=teclado.nextInt();
      System.out.print("Incremento: ");
      incre=teclado.nextInt();
      }
      
      if (selecOperador==1)
      {    
        //encabezado
        System.out.print("   + ");
        System.out.print(" |  ");
        double encabeza=min;
        while (encabeza<=max)
        {
          System.out.printf("%8.1f",encabeza);
          encabeza= encabeza+incre;
        }
        System.out.println();
        double i=min;
        for (; i<=max; i=i+incre)
          System.out.print("----------");
        System.out.println();
        
        //fila
        
        double fila=min;
        while (fila<=max)
        {
          double columna = min;
          System.out.printf("%5.1f", fila);
          System.out.print(" |  ");
          while (columna<=max)
          {
            System.out.printf("%8.1f",fila+columna);
            columna=columna+incre;
          }
          System.out.println();
          fila=fila+incre;
        }
      }
      else if (selecOperador==2)
      {
        //encabezado
        System.out.print("   - ");
        System.out.print("  |  ");
        double encabeza=min;
        while (encabeza<=max)
        {
          System.out.printf("%8.1f", encabeza);
          encabeza= encabeza+incre;
        }
        System.out.println();
        double i=min;
        for (; i<=max; i=i+incre)
          System.out.print("----------");
        System.out.println();
        //fila
        
        double fila=min;
        while (fila<=max)
        {
          double columna = min;
          System.out.printf("%5.1f", fila);
          System.out.print("  |  ");
          while (columna<=max)
          {
            System.out.printf("%8.1f",columna-fila);
            columna=columna+incre;
          }
          System.out.println();
          fila=fila+incre;
        }
      }
      else if (selecOperador==3)
      {
        //encabezado
        System.out.print("   *");
        System.out.print("  |  ");
        double encabeza=min;
        while (encabeza<=max)
        {
          System.out.printf("%8.1f", encabeza);
          encabeza= encabeza+incre;
        }
        System.out.println();
        double i=min;
        for (; i<=max; i=i+incre)
          System.out.print("----------");
        System.out.println();
        //fila
        
        double fila=min;
        while (fila<=max)
        {
          double columna = min;
          System.out.printf("%5.1f", fila);
          System.out.print("  |  ");
          while (columna<=max)
          {
            System.out.printf("%8.1f",columna*fila);
            columna=columna+incre;
          }
          System.out.println();
          fila=fila+incre;
        }
      }
      else if (selecOperador==4)
      {
        //encabezado
        System.out.print("   /");
        System.out.print("  |  ");
        double encabeza=min;
        while (encabeza<=max)
        {
          System.out.printf("%8.1f", encabeza);
          encabeza= encabeza+incre;
        }
        System.out.println();
        double i=min;
        for (; i<=max; i=i+incre)
          System.out.print("----------");
        System.out.println();
        //fila
        
        double fila=min;
        while (fila<=max)
        {
          double columna = min;
          System.out.printf("%5.1f", fila);
          System.out.print("  |  ");
          while (columna<=max)
          {
            System.out.printf("%8.1f",columna/fila);
            columna=columna+incre;
          }
          System.out.println();
          fila=fila+incre;
        }
      }
      else if (selecOperador==5)
      {
        //encabezado
        System.out.print("   %");
        System.out.print("  |  ");
        double encabeza=min;
        while (encabeza<=max)
        {
          System.out.printf("%8.1f", encabeza);
          encabeza= encabeza+incre;
        }
        System.out.println();
        double i=min;
        for (; i<=max; i=i+incre)
          System.out.print("----------");
        System.out.println();
        //fila
        
        double fila=min;
        while (fila<=max)
        {
          double columna = min;
          System.out.printf("%5.1f", fila);
          System.out.print("  |  ");
          while (columna<=max)
          {
            System.out.printf("%8.1f",columna%fila);
            columna=columna+incre;
          }
          System.out.println();
          fila=fila+incre;
        }
      }
      System.out.println();
    }
  }
}

