some image

Codes and Tags

Recorridos de una matriz cuadrada

Etiquetas: , Blog, Programación 2 comments

Quizás este tema parezca muy trivial, elemental o incluso offtopic. Sin embargo a veces parece un poco confuso identificar de que forma se deben utilizar los ciclos for para realizar los diferentes recorridos de una matriz cuadrada.

Bien, para no alargar el tema coloco un breve ejemplo de una matriz que se llena con numeros aleatorios y luego realiza diferentes recorridos.

/**
 * Clase que se encarga de mostrar un ejemplo de los diferentes recorridos de 
 * una matriz / arreglo bidimensional
 * 
 * http://codesandtags
 */

public class Arreglos {
  public static void main(String[] args) {
	// Declaracion del arreglo bidimensional : Cuadrado
	int[][] matriz = new int[5][5];

	// Lleno el arreglo
	for (int i = 0; i < matriz.length; i++) {
		for (int m = 0; m < matriz[0].length; m++) {
			matriz[i][m] = (int) (Math.random() * 100);
		}
	}

	// Mostrando el arreglo completo
	System.out.println("\n Mostrando arreglo completo : ");
	for (int i = 0; i < matriz.length; i++) {
		for (int m = 0; m < matriz[0].length; m++) {
			System.out.print(" " + matriz[i][m]);
		}
		System.out.println("");
	}

	// Recorriendo columnas de derecha a izquierda
	System.out.println("\n Recorriendo de derecha a izquierda : ");
	for (int i = 0; i < matriz.length; i++) {
		for (int m = matriz[0].length - 1; m >= 0; m--) {
			System.out.print(" " + matriz[i][m]);
		}
		System.out.println("");
	}

	// Recorriendo filas de abajo hacia arriba
	System.out.println("\n Recorriendo de abajo a arriba : ");
	for (int i = matriz.length - 1; i >= 0; i--) {
		for (int m = 0; m < matriz[0].length; m++) {
			System.out.print(" " + matriz[i][m]);
		}
		System.out.println("");
	}

	// Recorriendo de filas de abajo a arriba y de derecha a izquierda
	System.out
			.println("\n Recorriendo de abajo a arriba y columnas de derecha a izquierda : ");
	for (int i = matriz.length - 1; i >= 0; i--) {
		for (int m = matriz[0].length - 1; m >= 0; m--) {
			System.out.print(" " + matriz[i][m]);
		}
		System.out.println("");
	}

	// Recorrido de la diagonal principal arriba hacia abajo
	// Solo matrices cuadradas
	System.out
			.println("\n Recorriendo la diagonal principal arriba hacia abajo : ");
	for (int i = 0; i < matriz.length; i++) {
		System.out.print(" " + matriz[i][i]);
	}
	System.out.println("");

	// Recorrido de la diagonal principal abajo hacia arriba
	// Solo matrices cuadradas
	System.out
			.println("\n Recorriendo la diagonal principal de abajo hacia arriba: ");
	for (int i = matriz.length - 1; i >= 0; i--) {
		System.out.print(" " + matriz[i][i]);
	}
	System.out.println("");

	// Recorrido de la diagonal principal arriba hacia abajo
	// Solo matrices cuadradas
	System.out
			.println("\n Recorriendo la diagonal secundaria arriba hacia abajo : ");
	for (int i = 0; i < matriz.length; i++) {
		System.out.print(" " + matriz[i][matriz.length - 1 - i]);
	}
	System.out.println("");
	
	// Recorrido de la diagonal principal arriba hacia abajo
	// Solo matrices cuadradas
	System.out
			.println("\n Recorriendo la diagonal secundaria abajo hacia arriba : ");
	for (int i = matriz.length - 1; i >= 0; i--) {
		System.out.print(" " + matriz[i][matriz.length - 1 - i]);
	}
	System.out.println("");
  }
}

Ejemplo de salida

 Mostrando arreglo completo : 
 73 40 90 62 83
 6 37 60 73 3
 84 12 71 43 6
 77 53 31 69 76
 58 30 12 72 64

 Recorriendo de derecha a izquierda : 
 83 62 90 40 73
 3 73 60 37 6
 6 43 71 12 84
 76 69 31 53 77
 64 72 12 30 58

 Recorriendo de abajo a arriba : 
 58 30 12 72 64
 77 53 31 69 76
 84 12 71 43 6
 6 37 60 73 3
 73 40 90 62 83

 Recorriendo de abajo a arriba y columnas de derecha a izquierda : 
 64 72 12 30 58
 76 69 31 53 77
 6 43 71 12 84
 3 73 60 37 6
 83 62 90 40 73

 Recorriendo la diagonal principal arriba hacia abajo : 
 73 37 71 69 64

 Recorriendo la diagonal principal de abajo hacia arriba: 
 64 69 71 37 73

 Recorriendo la diagonal secundaria arriba hacia abajo : 
 83 73 71 53 58

 Recorriendo la diagonal secundaria abajo hacia arriba : 
 58 53 71 73 83

PDTA : Queda pendiente colocar el recorrido en espiral de una matriz y el famoso recorrido del caballo :)

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment