import java.util.Scanner;
public class Operacion {

    public static void main(String[] args) {
        
        // Variables
        int operador;
        double minimo;
        double maximo;
        double incremento;
        boolean salir;
        
        // Haga mientras no sea salir
        do{            
            //Inicializando Variables al iniciar el ciclo
            operador = 0;
            minimo = 0;
            maximo = 0;
            incremento = 0;
            salir = false;
            Scanner in = new Scanner(System.in);
            
            // Pidiendo operacion a realizar
            System.out.println(" Operador [ 1=+ 2=- 3=* 4=/ 5=% 0=salir]:");
            operador = in.nextInt();
            
            // Si no es salir
            if ( operador != 0 ) {
                
                
                // Pide los datos al usuario ---------------
                System.out.println(" Valor minimo:");
                minimo = in.nextInt();
                System.out.println(" Valor maximo:");
                maximo = in.nextInt();
                System.out.println(" Incremento:");
                incremento = in.nextInt();
                // -----------------------------------------
                
                
                // Inicio de la impresion de la tabla -------------------------
                
                switch(operador){
                    case 1:
                        System.out.print("  +    |"); // Operador
                        break;
                    case 2:
                        System.out.print("  -    |"); // Operador
                        break;
                    case 3:
                        System.out.print("  *    |"); // Operador
                        break;
                    case 4:
                        System.out.print("  /    |"); // Operador
                        break;
                    case 5:
                        System.out.print("  %    |"); // Operador
                        break;
                }
                
                //System.out.print("  "+ operador + "    |"); // Operador
                double i = minimo;
                double j = minimo;
                
                //  encabezado
                while (i<=maximo){
                    System.out.print(" " + i);
                    if(  i >= 10 ){ System.out.print(" "); }
                    else { System.out.print("  "); }
                    i=i+incremento;
                }
                System.out.println();
                
                
                // Rayitas que se hacen segun la cantidad de elementos
                System.out.print(" -------");
                for(int y=0;y<(maximo/incremento);y++){ // maximo/incremento da la cantidad de elementos en las filas
                    System.out.print("-----");
                }
                i = minimo;
                System.out.println();
                
                
                // inicio del contenido de la tabla
                while (i<=maximo){
                    
                    // Numeros de la primera columna
                    System.out.print("  "+  i  );
                    if( i >= 10 ){ System.out.print(" |"); } // si el numero es mayor a 10 elimina un espacio
                    else { System.out.print("  |"); }        // para mantener la tabla bien cuadrada

                    // Se rellena con los resultados de las operaciones
                    j = minimo;
                    while (j<=maximo){
                        double resultado=0; // variable que va a guardar el resultado segun la operacion

                        switch(operador){
                            case 1:
                                resultado = j + i;
                                break;
                            case 2:
                                resultado = j - i;
                                break;
                            case 3:
                                resultado = j * i;
                                break;
                            case 4:
                                resultado = j / i;
                                break;
                            case 5:
                                resultado = j % i;
                                break;
                        
                        }

                        System.out.print( " " + resultado );
                        
                        // Segun el resultado se intenta mantener la tabla cuadrada
                        if(  resultado >= 10 ){ System.out.print(" "); }
                        if(  resultado < 10  ){ 
                            if(  resultado < 0   ){ 
                               if(  resultado < -10   ){ System.out.print(""); }
                               else{ System.out.print(" "); }
                            }
                            else{System.out.print("  "); }
                        }
                        j = j+incremento; // siguiente columna
                    }
                    i = i+incremento; // siguiente fila
                    System.out.println();
                }
                System.out.println();
                System.out.println();
            } else {
                salir = true;  // si se dio la operacion salir se llega aqui
            }
        } while (!salir); // cuando salir es = a true se sale

    }
}