sábado, 24 de agosto de 2013

Estructuras de Control Parte 1: Ejercicio 2

Ejercicio 2:

Una empresa grande paga a sus vendedores mediante comisiones. Los vendedores reciben $200 por semana, más el 9% de sus ventas brutas durante esa semana. Por ejemplo, un vendedor que vende $5000 de mercancía en una semana, recibe $200 más el 9% de 5000, o un total de $650. La empresa ofrece los siguientes productos:
Código
Descripción
Precio Unitario
1
Impresora
239.99
2
Teclado
129.75
3
Memoria Flash
99.95
4
Monitor LCD
350.89
Desarrolle una aplicación en Java que reciba como entrada los artículos vendidos por un vendedor durante la última semana, y que calcule y muestre los ingresos de ese vendedor.  No hay límite en cuanto al número de artículos que un vendedor puede vender.
Lectura.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package datos;
 7 
 8 import java.io.BufferedReader;
 9 import java.io.IOException;
10 import java.io.InputStreamReader;
11 
12 /**
13  *
14  * @author igor
15  */
16 public class Lectura {
17  
18     private static BufferedReader candena = new BufferedReader(
19             new InputStreamReader(System.in));
20 
21     public static String leer(String mensaje) throws IOException{
22         System.out.print(mensaje);
23         return candena.readLine();
24     }
25 
26     public static char leerCaracter(String mensaje) throws IOException{
27         System.out.println(mensaje);
28         return candena.readLine().charAt(0);
29     }
30 }
31 
Empleado.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package entidades;
 7 
 8 /**
 9  *
10  * @author iAlexander
11  */
12 public class Empleado {
13     public String codigo;
14     public String nombre;
15     public Producto[] listaProductos = new Producto[5];
16     public int i = 0;
17 
18     public Empleado(String codigo, String nombre){
19         this.codigo = codigo;
20         this.nombre = nombre;
21     }
22 
23     public void registrarProducto(Producto producto){
24         if(i == listaProductos.length)
25             duplicaCapacidad();
26         listaProductos[i++] = producto;
27     }
28 
29     private void duplicaCapacidad(){
30         Producto[] listaAux = new Producto[listaProductos.length+5];
31         for(int j=0;  j<listaProductos.length; j++)
32             listaAux[j] = listaProductos[j];
33         listaProductos = listaAux;
34     }
35 
36     @Override
37     public String toString() {
38         return "\nEmpleado:"
39                 + "\nCodigo: " + codigo
40                 + "\nNombre: " + nombre;
41     }   
42 }
43 
44 
Producto.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package entidades;
 7 
 8 /**
 9  *
10  * @author iAlexander
11  */
12 public class Producto {
13     public int codigo;
14     public String descripcion;
15     public double  precio;
16     public int cantidad;
17     public double total;
18 
19     public Producto(int codigo,String descripcion, double precio, int cantidad, double total) {
20         this.codigo = codigo;
21         this.descripcion = descripcion;
22         this.precio = precio;
23         this.cantidad = cantidad;
24         this.total = total;
25     }
26 }
27 
28 
Ejercicio2.java
  1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 
  6 package ejercicios;
  7 
  8 import datos.Lectura;
  9 import entidades.Empleado;
 10 import entidades.Producto;
 11 import java.io.IOException;
 12 import java.text.DecimalFormat;
 13 
 14 /**
 15  *
 16  * @author iAlexander
 17  */
 18 public class Ejercicio2 {
 19     public static void main(String[] args) throws IOException {
 20         int opcion;
 21         String codigo;
 22         String nombre;
 23         DecimalFormat decimalFormat = new DecimalFormat("0.00");
 24         String menuP = "\nMenu - Principal:"
 25                 + "\n1. Registrar Empleado"
 26                 + "\n2. Listar Todos los empleados"
 27                 + "\n3. Registrar Productos para un Empleado"
 28                 + "\n4. Salir"
 29                 + "\nDigite opcion: ";
 30         String menuRP = "Menu - Lista de Productos:"
 31                 + "\nLista de Productos:"
 32                 + "\nCodigo \tDescripcion \tPrecio($)"
 33                 + "\n1 \tImpresora      \t239.99"
 34                 + "\n2 \tTeclado      \t129.75"
 35                 + "\n3 \tMemoria Flash     \t99.75"
 36                 + "\n4 \tMonitor LCD     \t350.89"
 37                 + "\nRegistrar Producto [y~n]?: ";
 38         
 39         Empleado[] listaEmpleado = new Empleado[10];
 40         int i = 0;
 41         int l = 0;
 42         String cadena = "";
 43         char r;
 44         while(true){
 45             opcion = Integer.parseInt(Lectura.leer(menuP));
 46             if(opcion == 4) break;
 47             switch(opcion){
 48                 case 1:                    
 49                     if(i<10){
 50                         codigo = Lectura.leer("Ingrese un codigo: ");
 51                         nombre = Lectura.leer("Ingrese un nombre: ");
 52                         listaEmpleado[i++] = new Empleado(codigo, nombre);
 53                     }
 54                     else
 55                         System.out.println("Ya no queda memoria para agregar a otro empleado");
 56                     break;
 57                 case 2:
 58                     for(int j=0; j<i; j++)
 59                         cadena += listaEmpleado[j].toString();
 60                     System.out.println(cadena);
 61                     break;
 62                 case 3:
 63                     String cod;
 64                     
 65                     boolean band = false;
 66                     if(listaEmpleado[0] == null)
 67                         System.out.println("Registre un empleado primero");
 68                     else{
 69                         while(true){
 70                             cod = Lectura.leer("Digite el codigo del empleado del cual"
 71                                     + " desea registrar productos: ");
 72                             int k = 0;
 73                             while(k<i){
 74                                 if(listaEmpleado[k].codigo.compareTo(cod) == 0){
 75                                     band = true;
 76                                     l = k;
 77                                 }
 78                                 k++;
 79                             }
 80                             if(band){                                
 81                                 Empleado empleado = listaEmpleado[l];
 82                                 System.out.println("\n\nEmpleado: "+empleado.nombre);
 83                                 while(true){
 84                                     r = Lectura.leerCaracter(menuRP);
 85                                     switch (r){
 86                                         case 'y':
 87                                             int code;
 88                                             String descripcion = "";
 89                                             double precio = 0;
 90                                             int cantidad;
 91                                             double total;                                            
 92                                             do{
 93                                                 code = Integer.parseInt(Lectura.leer("Ingrese codigo "
 94                                                         + "Producto: "));
 95                                             }while(code < 1 || code > 4);
 96                                             switch (code){
 97                                                 case 1:
 98                                                     descripcion = "Impresora";
 99                                                     precio = 239.39;
100                                                     break;
101                                                 case 2:
102                                                     descripcion = "Teclado";
103                                                     precio = 179.75;
104                                                     break;
105                                                 case 3:
106                                                     descripcion = "Memoria Flash";
107                                                     precio = 99.75;
108                                                     break;
109                                                 case 4:
110                                                     descripcion = "Monitor LCD";
111                                                     precio = 350.89;
112                                                     break;
113                                             }
114                                             do{
115                                                 cantidad = Integer.parseInt(Lectura.leer("Cantidad: "));
116                                             }while(i<1);
117                                             total = cantidad*precio;
118                                             empleado.registrarProducto(new Producto(code, descripcion,
119                                                     precio, cantidad, total));
120                                             break;
121                                         case 'n':
122                                             double suma = 0;
123                                             System.out.println("\nResumen:"
124                                                     + "\nCod.\t\tCant.\t\tDesp.\t\t   precio\t\t  total");
125                                             for(int m=0; m<empleado.i; m++){
126                                                 Producto[] list = empleado.listaProductos;
127                                                 System.out.println(list[m].codigo
128                                                         + "   \t\t"+list[m].cantidad
129                                                         + "    \t\t"+list[m].descripcion
130                                                         + "   \t"+list[m].precio
131                                                         + "   \t\t"+decimalFormat.format(list[m].total));
132                                                 suma += list[m].total;                                                
133                                             }
134                                             System.out.println("Total Ventas: "+decimalFormat.format(suma)
135                                                         + "\nComision Semanal: $200.00"
136                                                         + "\nComision de Ventas(9%): "+decimalFormat.format(
137                                                         0.09*suma)
138                                                         + "\nTotal Comision: "+decimalFormat.format(
139                                                         0.09*suma+200));
140                                             break;
141                                         default:
142                                             System.out.println("Opcion no válida");
143                                             continue;
144                                     }
145                                     if(r=='n') break;
146                                 }
147                             }else{
148                                 
149                                 System.out.println("Codigo no registrado");
150                                 continue;
151                             }
152                             if(r=='n') break;
153                         }
154                     }
155                     break;                 
156                 default:
157                     System.out.println("Opcion no válida");
158                     continue;                    
159             }
160         }
161     }
162 }
163 
164 

run:

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 1
Ingrese un codigo: 46914430
Ingrese un nombre: Igor

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 1
Ingrese un codigo: 45698523
Ingrese un nombre: Nathan

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 2

Empleado:
Codigo: 46914430
Nombre: Igor
Empleado:
Codigo: 45698523
Nombre: Nathan

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 3
Digite el codigo del empleado del cual desea registrar productos: 46914430


Empleado: Igor
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
y
Ingrese codigo Producto: 1
Cantidad: 5
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
t
Opcion no válida
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
y
Ingrese codigo Producto: 4
Cantidad: 6
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
y
Ingrese codigo Producto: 2
Cantidad: 3
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
y
Ingrese codigo Producto: 3
Cantidad: 5
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
n

Resumen:
Cod.        Cant.       Desp.         precio          total
1            5          Impresora     239.39          1196,95
4            6          Monitor LCD   350.89          2105,34
2            3          Teclado       179.75           539,25
3            5          Memoria Flash 99.75            498,75
Total Ventas: 4340.29
Comision Semanal: $200.00
Comision de Ventas(9%): 390,63
Total Comision: 590,63

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 5
Opcion no válida

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 1
Ingrese un codigo: 69587425
Ingrese un nombre: Violeta

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 3
Digite el codigo del empleado del cual desea registrar productos: 45698523


Empleado: Nathan
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
y
Ingrese codigo Producto: 1
Cantidad: 10
Menu - Lista de Productos:
Lista de Productos:
Codigo         Descripcion         Precio($)
1               Impresora            239.99
2               Teclado              129.75
3              Memoria Flash        99.75
4               Monitor LCD          350.89
Registrar Producto [y~n]?:
n

Resumen:
Cod.      Cant.        Desp.         precio            total
1         10           Impresora     239.39            2393,90
Total Ventas: 2393.90
Comision Semanal: $200.00
Comision de Ventas(9%): 215,45
Total Comision: 415,45

Menu - Principal:
1. Registrar Empleado
2. Listar Todos los empleados
3. Registrar Productos para un Empleado
4. Salir
Digite opcion: 4
GENERACIÓN CORRECTA (total time: 3 minutes 2 seconds)

jueves, 22 de agosto de 2013

Estructuras de Control Parte 1: Ejercicio 1

Ejercicio 1:


Los conductores se preocupan acerca del kilometraje de sus automóviles. Un conductor ha llevado el registro de varios reabastecimientos de gasolina, registrando los kilómetros conducidos y los litros usados en cada reabastecimiento. Desarrolle una aplicación en java que reciba como entrada los kilómetros conducidos y los litros usados (ambos enteros) por cada reabastecimiento. El programa debe calcular y mostrar los kilómetros por litro obtenidos en todos los reabastecimientos hasta este punto. Todos los cálculos del promedio deben producir resultados en números de punto flotante.
 
Ejercicio1.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package ejercicios;
 7 
 8 import datos.Lectura;
 9 import java.io.IOException;
10 
11 /**
12  *
13  * @author iAlexander
14  */
15 public class Ejercicio1 {
16     public static void main(String[] args) throws IOException {
17         //declaracion de variables
18         int kilometros = 0;
19         int litrosGasolina = 0;
20         char r;
21         int contador = 0;
22         while(true){
23             r = Lectura.leerCaracter("Registrar reabastecimiento (y~n)?: ");
24             switch(r){
25                 case 'n':
26                     break;
27                 case 'y':
28                     System.out.println("Reabastecimiento #"+(++contador));
29                     kilometros += Integer.parseInt(Lectura.leer("Distancia(Km): "));
30                     litrosGasolina += Integer.parseInt(Lectura.leer("Gasolina(l): "));                   
31                     break;
32                 default:
33                     System.out.println("Opcion no válida");
34                     break;
35             }
36             if(r=='n') break;
37         }    
38         System.out.println("Reporte:");
39         System.out.println("Total Kilómetros: "+kilometros
40                 + "\nTotal Gasolina: "+litrosGasolina
41                 + "\nPromedio: "+((double)kilometros/contador)+"/"+
42                 (double)litrosGasolina/contador+" km/l");
43     }
44 }
45 
46 


run: 
Registrar reabastecimiento (y~n)?:  
y 
Reabastecimiento #1 
Distancia(Km): 80
Gasolina(l): 5 
Registrar reabastecimiento (y~n)?:  
y 
Reabastecimiento #2 
Distancia(Km): 50 
Gasolina(l): 3 
Registrar reabastecimiento (y~n)?: 
n 
Reporte: 
Total Kilómetros: 130 
Total Gasolina: 8 
Promedio: 65.0/4.0 km/l 
GENERACIÓN CORRECTA (total time: 23 seconds)