Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: r2montero en 07 de Septiembre 2015, 23:08
-
Saludos a tod@s!
Tengo un problema con un ejercicio de matrices, que pide lo siguiente:
Un método llamado sumaAcumCol, que retorna true si para todas las filas,
en la última columna se encuentra la suma de los valores enteros de dicha
fila. En caso contrario retorne false.
Por ejemplo:
(http://i288.photobucket.com/albums/ll179/r2montero/matriz_zpstr9evfsw.png)
3+10+1=14
0+2+2 = 4
7+5+8 = 20
10+2+11 = 23
En este caso, el método retornaría true.
Este es el código que tengo hasta ahora, pero aunque la última columna no sea la suma de la fila me indica true.
public class SumaCol {
public static void main(String[] args){
int[][] intMatrix = {{3, 10, 1, 14}, {0, 2, 2, 4}, {7, 5, 8, 20}, {10, 2, 11, 23}};
boolean sumOK = false;
int sumaAcum = 0;
int colValue = 0;
for(int row = 0; row < intMatrix.length; row++) {
colValue = intMatrix[row][intMatrix[row].length - 1];
for(int column = 0; column < intMatrix[row].length - 1; column++){
sumaAcum += intMatrix[row][column];
if(sumaAcum == colValue) {
sumOK = true;
}
}
sumaAcum = 0;
}
System.out.println(sumOK);
}
}
Todos sus consejos y sugerencias serán de muchísima utilidad.
-
Hola!
En el código tienes problemas con la algoritmia (planteamiento del algoritmo de resolución) y con los índices a emplear con la matriz.
En este curso se explica algoritmia y bases de la programación: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59
El código corregido (si no me he equivocado) sería el siguiente:
public class SumaCol {
public static void main(String[] args){
int[][] intMatrix = {{3, 10, 1, 14}, {0, 2, 2, 44}, {7, 5, 8, 20}, {10, 2, 11, 23}};
int numeroDeFilas = intMatrix.length;
int numeroDeColumnas = intMatrix[0].length;
boolean sumaOK = true;
int sumaAcum = 0;
int columnaSuma = 0;
for(int row = 0; row < numeroDeFilas; row++) {
columnaSuma = intMatrix[row][numeroDeColumnas - 1];
for(int column = 0; column < numeroDeColumnas-1; column++){
sumaAcum = sumaAcum + intMatrix[row][column];
System.out.print(" "+intMatrix[row][column] + " + ");
}
System.out.print ("0 = " + columnaSuma + " ? \n\n");
if(sumaAcum == columnaSuma) {
// Todo correcto
} else {System.out.println ("Detectada columna que no cumple \n");
sumaOK = false;}
sumaAcum = 0;
}
System.out.println("¿Cumplen todas las filas el criterio: "+sumaOK);
}
}
Saludos!
-
Muchas gracias por la ayuda Cesar!
Voy a revisarlo y también el enlace.
Saludos!