Foro de elhacker.net

Programación => Java => Mensaje iniciado por: fprg en 16 Noviembre 2013, 22:52 pm



Título: media de arrays
Publicado por: fprg en 16 Noviembre 2013, 22:52 pm
estoy aprendiendo a prgramar en java
necesito saber como puedo calcular la media de una serie de arrays, pero si en la posicion N del array no hay un valor establecido, tengo que hacer la media solo son los valores anteriores a ese.


Título: Re: media de arrays
Publicado por: Mitsu en 16 Noviembre 2013, 23:35 pm
Código
  1. package javase.arrays.media;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class MediaArray {
  6.  
  7. private int[] numeros;
  8. private int condicion;
  9.  
  10. public MediaArray() {
  11. llenarArray();
  12. }
  13.  
  14. private void llenarArray() {
  15.                Scanner into = new Scanner(System.in);
  16. System.out.println("Cuantos valores desea procesar?");
  17. int tamanio = into.nextInt();
  18. System.out.println("Numero condicion para que se detenga la suma:");
  19. condicion = into.nextInt();
  20.  
  21. numeros = new Int[tamanio];
  22.  
  23. System.out.println("Ingrese los numeros uno a uno.");
  24. for (short i=0; i < tamanio; i++) {
  25. numeros[i] = into.nextInt();
  26. }
  27. }
  28.  
  29. private float encontrarMedia() {
  30. float suma = 0;
  31.  
  32. for (int i : numeros) {
  33. if (i == condicion) {
  34. break;
  35. }
  36. suma += (float) i;
  37. }
  38.  
  39. return suma/numeros.length;
  40. }
  41.  
  42. public static void main (String... args) {
  43.  
  44. MediaArray media = new MediaArray();
  45. System.out.println("La media de los numeros ingresados es:\t" + media.encontrarMeda());
  46. }
  47.  
  48. }
  49.  

Nada del otro mundo no? A la próxima por lo menos, inténtalo. Esto se trata de razonar, evitar pedir ayuda hasta que sientas que ya no puedes seguir. Algo tan sencillo como ésto, solo se resuelve razonando un poco.

PD: Si aún no ves POO, puedes hacer esto mismo todo en el main.


Título: Re: media de arrays
Publicado por: fprg en 17 Noviembre 2013, 17:39 pm
es algo mas complicado...
si yo tengo un array de tamanio 4, y solo ingreso dos valores, la media tiene que ser hecha solo con esos 2 valores. Y de esta manera, dividiria entre 4
de todas maneras, GRACIAS por la ayuda


Título: Re: media de arrays
Publicado por: Mitsu en 17 Noviembre 2013, 20:00 pm
si yo tengo un array de tamanio 4, y solo ingreso dos valores, la media tiene que ser hecha solo con esos 2 valores.

Eso es redundante. Para qué entonces creas un arreglo de 'n' posiciones si no vas a utilizar todas las posiciones? Eso va contra la lógica común.

Mejor crea un ArrayList y anda agregando los valores que desees. Luego con un foreach, sumas los valores ingresados y sacas la media con el tamaño establecido. El tamaño se guardará en una variable solo para efectuar la media. En todo caso, no sería media, ya que la media se obtiene dividiendo la suma de un conjunto de valores por la cantidad misma.

Código
  1. package javase.arrays.media;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class MediaArray {
  6.  
  7. private List<Float> numeros;
  8. private int tamanio = 0;
  9.  
  10. public MediaArray() {
  11. llenarArray();
  12. }
  13.  
  14. // Llenar lista con numeros ingresados
  15. private void llenarArray() {
  16.                numeros = new ArrayList<>();
  17.                Scanner into = new Scanner(System.in);
  18. System.out.print("Cantidad de numeros:");
  19. tamanio = into.nextInt();
  20.  
  21. System.out.print("\nIngrese los numeros uno a uno:");
  22.                System.out.println("\n*** Cuando desee dejar de ingresar teclee -1 ***");
  23. while (true) {
  24.                        float numero = into.nextFloat();
  25.                        if (numero == -1) {
  26.                           break;
  27.                        }
  28.                        else {
  29.                           numeros.add(numero);
  30.                        }
  31. }
  32. }
  33.  
  34. private float encontrarMedia() {
  35. float suma = 0;
  36.  
  37. for (float i : numeros) {
  38. suma += i;
  39. }
  40.  
  41. return suma/tamanio;
  42. }
  43.  
  44. public static void main (String... args) {
  45.  
  46. MediaArray media = new MediaArray();
  47. System.out.println("\nLa media de los numeros ingresados es:\t" + media.encontrarMeda());
  48. }
  49.  
  50. }
  51.  

Lo hago con ArrayList porque si lo hago con un Array, al obtener los valores del array, obtendría un NullPointerException cuando accediera a las posiciones en donde no se ha agregado nada. Lee ArrayList en la documentación oficial.


Título: Re: media de arrays
Publicado por: fprg en 17 Noviembre 2013, 21:14 pm
ya se que es algo absurdo pero es lo que me mandan
MUCHAS GRACIAS:)


Título: Re: media de arrays
Publicado por: Mitsu en 17 Noviembre 2013, 21:19 pm
Jaja si pues, ni modo, solo acatar la tarea xD

Me alegro que te haya servido. Un saludo.


Título: Re: media de arrays
Publicado por: fprg en 18 Noviembre 2013, 20:09 pm
si que me ha servido :)
tambien necesito crear dos metodos:
- uno para almacenar los datos del array (no vale usar la clase scanner)
-otro para modificar los datos ya almacenados
me podeis ayudar??