[ Foro de Java ]

¿Cómo pongo cero en ambas diagonales de una matriz?

11-Feb-2019 18:59
Santino Cortés
2 Respuestas

Sólo he logrado poner cero en la diagonal principal

package ejercicio01punto1;

/*ESCRIBA UN ALGORITMO QUE PONGA CERO EN AMBAS DIAGONALES DE LA MATRIZ.*/

public class Ejercicio01Punto1 {
public static void main(String[] args) throws java.lang.Exception {
int n = 10;
int matriz[][] = new int[n][n];

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j == i) {
matriz[i][j] = 0;

} else {
matriz[i][j] = 1;
}
}
}

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println("");
}

}
}


11-Feb-2019 19:10
Nacho Cabanes (+84)

La diagonal principal es (0,0), (1,1) y así sucesivamente. Si estás usando el primer índice para las filas y el segundo para las columnas, como parece por tu código (los nombres i,j son poco claros en este caso, sería mejor algo como "fila", "columna"), la otra diagonal sería (0, n-1), (1, n-2), etc.

Lo puedes hacer con dos asignaciones seguidas dentro del mismo "for:

if (j == i) {
matriz[i][j] = 0;
matriz[i][n-j-1] = 0;
...



11-Feb-2019 19:30
Santino Cortés

¿Porqué no se completa la diagonal secundaria?
0 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1
1 1 1 1 0 0 1 1 1 1
1 1 1 0 1 1 0 1 1 1
1 1 0 1 1 1 1 0 1 1
1 0 1 1 1 1 1 1 0 1
0 1 1 1 1 1 1 1 1 0






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)