Título: getPromedioColumnas(), algun tip ?
Publicado por: rub'n en 5 Diciembre 2016, 19:04 pm
Ya puedo sacar el promedio de cada fila, pero de cada columna ? linea [75 a 85], tenia años sin hacer esto :-X ,,,en la linea 38 llamo al metodo getPromedioFila y le paso un array, intente hacer algo parecido con la linea 51 de varias maneras pero me da java.lang.ArrayIndexOutOfBoundsException import java.text.DecimalFormat; /* * @Array 2D como promediar cada columna ? */ public class Array2Dimensiones implements Mostrar { private int array[][]; private int array2[][]; public Array2Dimensiones ( String descripcion, int array [][], int array2 [][] ) { print("\""+descripcion+"\"\n"); this.array = array; this.array2 = array2; mostrarArray(); } public void mostrarArray() { print("Array 2D completo\n"); for( int tmp[] : array) { for( int tmp2 : tmp ) { print("{"+tmp2+"}"); } print("\n"); } /* * PROMEDIO DE CADA FILA */ print("Promedio de cada fila \n"); for( int f=0; f<array.length; f++ ) { for( int c=0; c<array.length; c++ ) { print(""+array[f][c]); } double promedio = getPromedioFila( array[f] ); print("\t\t\t\t"+dosDigi.format(promedio)+"\n"); } /* * PROMEDIO DE CADA COLUMNA */ print("Promedio de cada columna \n"); for( int f=0; f<array.length; f++ ) { double promedio = 0; for( int c=0; c<array[f].length; c++ ) { print(""+array[c][f]); promedio = getPromedioColumna(array[c]); } print("\t\t\t\t"+dosDigi.format(promedio)+"\n"); } } /* * PROMEDIO FILA */ public double getPromedioFila( int array[] ) { int suma = 0; for( int f=0; f<array.length; f++ ) { suma += array[f]; } return (double) suma / array.length; } /* * PROMEDIO COLUMNA */ public double getPromedioColumna( int array[] ) { int suma = 0; for( int f=0; f<array.length; f++ ) { for( int c=0; c<array[f]; c++ ) { suma += array[c]; } } return (double) suma / array.length; } @Override public static void main ( String []blablabl ) { int array[][] = {{1,2,3}, {4,5,6}, {7,8,9}}; int array2[][] = {{1,2,3}, {4}, {5,6,7}}; new Array2Dimensiones("2 tipos de Array 2d e Irregular",array,array2); } }
"2 tipos de Array 2d e Irregular" {1}{2}{3} {4}{5}{6} {7}{8}{9} Promedio de cada fila 123 2,00 456 5,00 789 8,00 Promedio de cada columna at Array2Dimensiones.getPromedioColumna(Array2Dimensiones.java:80) at Array2Dimensiones.mostrarArray(Array2Dimensiones.java:52) at Array2Dimensiones.<init>(Array2Dimensiones.java:18) at Array2Dimensiones.main(Array2Dimensiones.java:99)
Título: Re: getPromedioColumnas(), algun tip ?
Publicado por: kingcreek en 7 Diciembre 2016, 19:25 pm
Te dejo lo que creo es la solucion si no entendi mal lo que quieres hacer, lo he ajustado para que sirva en array "regular" e "irregular". import java.text.DecimalFormat; /* * @Array 2D como promediar cada columna ? */ public class Array2Dimensiones implements Mostrar { private int array[][]; private int array2[][]; public Array2Dimensiones ( String descripcion, int array [][], int array2 [][] ) { print("\""+descripcion+"\"\n"); this.array = array; this.array2 = array2; mostrarArray(); } public void mostrarArray() { print("Array 2D completo\n"); for( int tmp[] : array) { for( int tmp2 : tmp ) { print("{"+tmp2+"}"); } print("\n"); } /* * PROMEDIO DE CADA FILA */ print("Promedio de cada fila \n"); for( int f=0; f<array.length; f++ ) { double promedio = 0; int c; for( c=0; c<array[f].length; c++ ) { print(""+array[f][c]); promedio += array[f][c]; } print("\t\t\t\t"+dosDigi.format(promedio / c)+"\n"); } /* * PROMEDIO DE CADA COLUMNA */ //obtenemos la longitud mas alta de las columnas para repetir el bucle for int cantidad = 0; int temp = 0; int x, y; int[] segundo; for (x = 0; x < array.length; ++x) { segundo = array[x]; for (y = 0; y < segundo.length; ++y) { temp++; } if(cantidad <= temp) { cantidad = temp; temp = 0; } } print("Promedio de cada columna \n"); for( int f=0; f<cantidad; f++ ) { double promedio = 0; int count = 0; int c; for( c=0; c < array.length; c++ ) { //se filtran las posiciones del array con valor nulo if(array[c].length > f) { print(""+array[c][f]); promedio += array[c][f]; count++; } } print("\t\t\t\t"+dosDigi.format(promedio / count)+"\n"); } } @Override public static void main ( String []blablabl ) { int array[][] = {{1,2,3}, {4,5,6}, {7,8,9}}; int array2[][] = {{1,2,3}, {4}, {5,6,7}}; new Array2Dimensiones("2 tipos de Array 2d e Irregular",array,array2); } }
|