Java - ayuda!!!

   
Vista:

ayuda!!!

Publicado por camilo jofre (2 intervenciones) el 02/11/2009 06:08:58
alguien que me ayude con este ejercicio, es para la plataforma dr.java!
muchas gracias!

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
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

RE:ayuda!!!

Publicado por Octavio (74 intervenciones) el 02/11/2009 07:35:11
Amigo estaba con lo tuyo pero se me hizo tarde te dejo lo que logre hacer, espero que lo entiendaz, en ese ejemplo falta que el usuario carge la cantidad de filas y columnas de la matriz pero es facil hacer eso y refinar el tema del zigzag. porque me esta salteando algunos casos:

import java.util.Random;

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 = 3;
int m = 3;
int in = 0;
int im = m-1;
Random rnd = new Random();
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] = rnd.nextInt(101);
//mostramos que tiene la matriz
System.out.print(matriz[i][j] + "-");
}
System.out.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);
System.out.println();
} else {
mostrarDiagonalIzquierdaADerecha(matriz, im, n, m);
System.out.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;
}
System.out.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;
//System.out.println("fila" + i + " col " + j);
while (i >= 0 && j >= 0){
System.out.print(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){
System.out.print(matriz[i][j] + " ");
i++;
j++;
}

}

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