Java - alguien que me ayude a corregir un codigo porfavor

   
Vista:

alguien que me ayude a corregir un codigo porfavor

Publicado por camilo  (2 intervenciones) el 04/11/2009 16:58:31
hola necesito ayuda con esto porfavor! ( un amigo me proporciono un codigo, pero no lo muestra de la forma en que me lo piden y el tema del zig zag esta desordenado, ver codigo abajo del programa). plataforma dr.java

cree una matriz de enteros NxM (N y M son ingresados por el usuario), con números aleatorios entre el 10 y el 99 [10-99].
Muestre la matriz.
Luego recorra la matriz en Zig-Zag y la muestre de la siguiente forma:

Ejemplo:
[20][50][30]
[41][82][73]
[24][99][10]

Se debe mostrar así:
24
99 41
20 82 10
73 50
30

Utilizar 3 metodos
Crear y llenar matriz
Mostrar matriz
Mostrar zig zag

public class zigzag {

public static boolean derAIz = false;
public static boolean primera = true;
public static boolean sumar = false;

public static void main (String[] arg){
int n,m;

StdOut.println("Ingrese las dimensiones de la Matriz");
n=StdIn.readInt();
m=StdIn.readInt();
int in = 0;
int im = m-1;
int[][] matriz = new int[n][m];

for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
//guardamos en la pos i j de la matriz un nº aleatoreo entre 0 y 100 (esto NO nos asegura que no se repitan numeros)
matriz[i][j] = StdRandom.uniform(101);
//mostramos que tiene la matriz
StdOut.print(matriz[i][j] + "-");
}
StdOut.println();
}
//mostramos la matriz en zigzag
int col = 0;
//la cantidad de diagonales que tiene una matriz es la cantidad de filas + la cantidad de columnas - 1
int cantDiag = 1;
while (cantDiag != n+m-1){
if (derAIz){
mostrarDiagonalDerechaAIzquierda(matriz, im, col);
StdOut.println();
} else {
mostrarDiagonalIzquierdaADerecha(matriz, im, n, m);
StdOut.println();
}
if (col < m-1){
col++;
}
if(sumar){
im++;
} else {
if (im < 0){
im=0;
sumar = true;
} else if (!primera){
im--;
im--;
if (im < 0){
im=0;
sumar = true;
}
StdOut.println("Se decremento im "+im + " col "+col);
} else {
primera = false;
}
}
cantDiag++;
//cambiamos el valor de verdad del flag de recorrido de la diagonal
derAIz = !derAIz;

}

}

public static void mostrarDiagonalDerechaAIzquierda(int[][] matriz, int fila, int col){
int i = fila;
int j = col;
//StdOut.println("fila" + i + " col " + j);
while (i >= 0 && j >= 0){
StdOut.println(matriz[i][j] + " ");
i--;
j--;
}
}

public static void mostrarDiagonalIzquierdaADerecha(int[][] matriz, int fila, int maxFila, int maxCol){
int i = fila;
int j = 0;
while (i < maxFila && j < maxCol){
StdOut.println(matriz[i][j] + " ");
i++;
j++;
}

}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder