Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con mi Tarea xD

Estas en el tema de Ayuda con mi Tarea xD en el foro de Java en Foros del Web. Hola, quisiera que me ayuden con esta pequeña aplicación que me dejaron, ya me rompi el coco toda la mañana, es que recién estoy comenzando. ...
  #1 (permalink)  
Antiguo 12/02/2011, 18:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Ayuda con mi Tarea xD

Hola, quisiera que me ayuden con esta pequeña aplicación que me dejaron, ya me rompi el coco toda la mañana, es que recién estoy comenzando.

Ejercicio:Realizar un programa que ingrese una cantidad "n" de números y finalice cuando el valor ingresado sea cero o múltiplo de 3. Mostrar adicionalmente la suma de los números, el conteo, el promedio, el mayor,el menor y mostrar adicionalmente el promedio sin tomar en cuenta el mayor ni el menor.

el codigo es de un boton. tengo un modelo del JList llamado mdlLista

Código Javascript:
Ver original
  1. boolean ingre = true;
  2.         int num = 0, sum = 0, cant = 0, max = 0, min = 0;
  3.         mdlLista.clear();
  4.         while (ingre) {
  5.             num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero: "));
  6.             sum += num;
  7.             mdlLista.addElement(num);
  8.             if (num > max)max = num;
  9.             //Aqui no consigo la logica para sacar el menor//
  10.             if(min<max)min=num;
  11.             ////////////////////////////
  12.             if (num == 0 | num % 3 == 0)
  13.                 ingre = false;
  14.         }
  15.         cant = mdlLista.size();
  16.         double pro = sum / cant;
  17.         double pro2 = (sum - max - min) / cant-2;
  18.         mdlLista.addElement("La Suma es: " + sum);
  19.         mdlLista.addElement("Numero de Elementos: " + cant);
  20.         mdlLista.addElement("Promedio: " + pro);
  21.         mdlLista.addElement("Mayor: " + max);
  22.         mdlLista.addElement("Menor: " + min);
  23.         mdlLista.addElement("Promedio sin Menor ni Mayor: " + pro2);

Lo que no consigo es identificar el menor, y tambien tengo un problemita con el promedio (cuando divide siempre saca entero y no saca decimales) y por ultimo el promedio 2 quise restarle 2 elementos pero no coincide la division.
OJO: como recien estoy comenzando en esto quisiera que me ayudasen en base a mi codigo porfa, esto tambien se puede hacer con arreglos, pero me piden de esta forma. espero su ayuda..
grax...........
  #2 (permalink)  
Antiguo 12/02/2011, 20:33
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: Ayuda con mi Tarea xD

La parte donde calculas el maximo esta bien, pero al calcular el minimo, porque lo comparas contra el maximo? Debes seguir la misma logica que con el maximo:

Código Java:
Ver original
  1. if (num<min) min = num;
En esta parte:

Código Java:
Ver original
  1. if (num == 0 | num &#37; 3 == 0)
El operador | se utiliza para trabajar con los bits. Dentro del if se debe utilizar el operador || (que es OR) o && (que es AND)
  #3 (permalink)  
Antiguo 12/02/2011, 21:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ayuda con mi Tarea xD

Gracias posman por la aclaración del operador OR.
Pero sigo teniendo problemas con el MINIMO.
Código Java:
Ver original
  1. if (num<min) min = num;
y tambien tengo problemas con el promedio, no se porque cuando divide no muestra los decimales(ejemplo: 9/2=4.0)
Ya intenté de esa forma y me da como resultado MENOR: 0
De todas formas se agradece la intencion
  #4 (permalink)  
Antiguo 12/02/2011, 22:53
 
Fecha de Ingreso: febrero-2011
Mensajes: 27
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Ayuda con mi Tarea xD

Lo del mínimo lo mejor que puedes hacer es inicializar min a Integer.MAX_VALUE, el hecho de que no te devuelva el valor con decimales es porque estás haciendo la división de dos enteros, aunque la almacenes en un double, esto resulta un número entero, si haces un casting a real se solucionará: double pro = (double)sum / (double)cant;

y la comprobación de salida del bucle la puedes hacer directamente sin el booleano y quedará todavía más fino el ejercicio:
while (num <> 0 || num % 3 <> 0) (Si bien es cierto para ello deberás inicializar num a cualquier cosa menos 0)

Un saludo!
  #5 (permalink)  
Antiguo 12/02/2011, 23:17
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Ayuda con mi Tarea xD

Cita:
Lo del mínimo lo mejor que puedes hacer es inicializar min a Integer.MAX_VALUE, el hecho de que no te devuelva el valor con decimales es porque estás haciendo la división de dos enteros, aunque la almacenes en un double, esto resulta un número entero, si haces un casting a real se solucionará: double pro = (double)sum / (double)cant;

y la comprobación de salida del bucle la puedes hacer directamente sin el booleano y quedará todavía más fino el ejercicio:
while (num <> 0 || num % 3 <> 0) (Si bien es cierto para ello deberás inicializar num a cualquier cosa menos 0)

Un saludo!
Gracias Carlos, se soluciono lo de los decimales
Lo del minimo todavia sigo en trava pero me abriste nuevas ideas
Saludos...

Etiquetas: tarea
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:31.