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

¿Hallar números mayores en un array?

Estas en el tema de ¿Hallar números mayores en un array? en el foro de Java en Foros del Web. Hola amigos, buenas noches. Bueno, tengo de tarea hacer un programa donde se pida "n" calificaciones y calcular el promedio y además hallar las calificaciones ...
  #1 (permalink)  
Antiguo 27/03/2014, 21:09
 
Fecha de Ingreso: marzo-2014
Mensajes: 1
Antigüedad: 5 años
Puntos: 0
¿Hallar números mayores en un array?

Hola amigos, buenas noches.
Bueno, tengo de tarea hacer un programa donde se pida "n" calificaciones y calcular el promedio y además hallar las calificaciones de menor y mayor o igual(>=) valor al del promedio.
He aquí mi código:

Código Java:
Ver original
  1. Scanner lee=new Scanner(System.in);
  2.        
  3.         float suma=0,Prom=0, menor, mayor=0;
  4.         int i=0, j=0, a=0;
  5.        
  6.         System.out.println("¿Cuantas calificaciones serán insertadas?");
  7.         int Numcalif=lee.nextInt();
  8.         float array1[]=new float[Numcalif];
  9.         float array2[]=new float[Numcalif];
  10.         float array3[]=new float[Numcalif];
  11.        
  12.         System.out.println("Ingresa calificaciones");
  13.         for(i=0;i<Numcalif;i++)
  14.         {
  15.             array1[i]=lee.nextFloat();
  16.             suma+=array1[i];
  17.             Prom=suma/Numcalif;
  18.             if(array1[i]>Prom)
  19.             {
  20.                 array2[j]=array1[i];
  21.                 j++;
  22.             }
  23.             else
  24.                 if(array1[i]<Prom)
  25.                 {
  26.                     array3[a]=array1[i];
  27.                     a++;
  28.                 }
  29.         }
  30.         System.out.println("El promedio es: "+Prom);
  31.        
  32.         System.out.println("Las calificaciones Mayores al promedio son:");
  33.         for(i=0;i<array2.length;i++)
  34.                 System.out.println(array2[i]);
  35.         System.out.println("Las calificaciones Menores al promedio son:");
  36.          for(i=0;i<array3.length;i++)
  37.                 System.out.println(array3[i]);

Lo que hago es declarar 3 arrays, 1° para guardar, 2°para guardar variables maximas y el 3° para variables minimas, despues inserto las calificaciones en el array1, hago la suma y promedio de las calificaciones, ahora lo que hago es comparar los elementos del array1 con el promedio resultante y si son maximos se guardan en el 2°array y en el 3° se guardan las minimas.
Bueno el problema que tengo es al comparar ya que al correr el programa solo compara números en forma descendente de grandes a pequeños elementos y realmente ordena los números maximos y minimos pero si agrego más de 4 elementos en el array siempre hay un número minimo que se queda en el array máximo y si lo hago insertando números en forma "aleatoria" todos los elementos quedan en máximo aún siendo minimos.

Ejemplo más de 4 elementos:
Código Java:
Ver original
  1. run:
  2. ¿Cuantas calificaciones serán insertadas?
  3. 5
  4. Ingresa calificaciones
  5. 100
  6. 90
  7. 80
  8. 70
  9. 60
  10. El promedio es: 80.0
  11. Las calificaciones Mayores al promedio son:
  12. 100.0
  13. 90.0
  14. 80.0
  15. 70.0
  16. 0.0
  17. Las calificaciones Menores al promedio son:
  18. 60.0
  19. 0.0
  20. 0.0
  21. 0.0
  22. 0.0
  23. BUILD SUCCESSFUL (total time: 6 seconds)


ejemplo insertando números aleatorios:
Código Java:
Ver original
  1. ¿Cuantas calificaciones serán insertadas?
  2. 5
  3. Ingresa calificaciones
  4. 40
  5. 70
  6. 50
  7. 60
  8. 90
  9. El promedio es: 62.0
  10. Las calificaciones Mayores al promedio son:
  11. 40.0
  12. 70.0
  13. 50.0
  14. 60.0
  15. 90.0
  16. Las calificaciones Menores al promedio son:
  17. 0.0
  18. 0.0
  19. 0.0
  20. 0.0
  21. 0.0
  22. BUILD SUCCESSFUL (total time: 8 seconds)

Por favor ayudenme, se los agradeceré mucho.
  #2 (permalink)  
Antiguo 28/03/2014, 05:32
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 6 años, 2 meses
Puntos: 22
Respuesta: ¿Hallar números mayores en un array?

Buenas,

Lo que estas haciendo es insertar 100 y divides entre el numero de calificaciones, en tu ejemplo 100 / 5 calificaciones, lo que te da 20 de promedio.
Pero ese no es el promedio real de todas las calificaciones, sino el promedio de las calificaciones que hayas insertado hasta ese momento.

Entonces va a llegar un punto, en que insertes (100 + 90 + 80 + 70) / 5 = 68... por lo que 70 pasa al vector de promedios que superan la media, y la siguiente iteracion...
(100 + 90 + 80 + 70 + 60 ) / 5 = 80, el valor 60 va al array de valores menores, pero 70 ya está insertado con anterioridad.

debes insertar primero el array con todos los elementos. Luego calcular el promedio. Y luego recorrer de nuevo el array e ir comparando los valores, e insertar en un array u otro.

Un saludo.

Etiquetas: programa, valor, variable
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 07:00.