-> Matriz en zic-zac | JAVA - SAAT-WEBS

Breaking

CODIGOS

JAVA

-> Matriz en zic-zac | JAVA

Aprende como hacer el recorrido de una matriz en zig-zag

A continuación de se muestra el código para mostrar una matriz en zig-zag en java. -

El código esta comentado por ello recomiendo simplemente copiarlo a tu IDE favorito y aprender viendo como funciona el código, así mismo,cabe mencionar que dicho código funciona para cualquier tamaño de matriz 

//importamos el Scanner y el Random
 import java.util.Scanner;
import java.util.Random;

public class RecorridoMatriz{

    public static void main(String[] args){
        //inicializamos lo que corresponde

Scanner sc = new Scanner(System.in);
        Random generador = new Random();

        System.out.print("Ingrese el valor de n, para una matriz nxn: ");
        int n = sc.nextInt();
        System.out.println("");
        int[][] matriz = new int[n][n];
        for(int i = 0; i < matriz.length; i++){
            for(int j = 0; j < matriz[0].length; j++){
                matriz[i][j] = generador.nextInt(100);
                if(matriz[i][j] < 10){
                    System.out.print("0");    
                }
                System.out.print(matriz[i][j] + " ");
            }
            System.out.println("");
        }

        int numCasillas = n * n;
        int contador = 0;
        int inicioI = 0;
        int inicioJ = 0;
        int i;
        int j;
        int aux;
        System.out.println("\nMostrando los valores de la matriz realizando un recorrido en zig-zag:\n");
        while(contador < numCasillas){
            //Diagonal descendente derecha a izquierda
            i = inicioI;
            j = inicioJ;
            while(i <= inicioJ){
                if(matriz[i][j] < 10){
                    System.out.print("0");    
                }
                System.out.println(matriz[i][j]);
                i++;
                j--;
                contador++;
            }

            if(inicioJ + 1 < n){
                inicioJ++;
                aux = inicioJ;
                inicioJ = inicioI;
                inicioI = aux;
            }else{
                inicioI++;
                aux = inicioI;
                inicioI = inicioJ;
                inicioJ = aux;
            }

            //Diagnonal ascendente izquierda a derecha
            i = inicioI;
            j = inicioJ;
            while(i >= inicioJ){
                if(matriz[i][j] < 10){
                    System.out.print("0");    
                }
                System.out.println(matriz[i][j]);
                i--;
                j++;
                contador++;
            }

            if(inicioI + 1 < n){
                inicioI++;
                aux = inicioI;
                inicioI = inicioJ;
                inicioJ = aux;
            }else{
                inicioJ++;
                aux = inicioJ;
                inicioJ = inicioI;
                inicioI = aux;
            }
        }
    }
}

Uso cookies para darte un mejor servicio.
Mi sitio web utiliza cookies para mejorar tu experiencia. Acepto Leer más
Copied!