Un problema clásico en la programación, especialmente cuando estamos iniciando a utilizar Arrays en un lenguaje de programación, una matriz es simplemente un array bidimensional, entonces ahora les mostrare el algoritmo y también solucionado en código java.
Una matriz caracol, como su nombre lo dice tiene, la siguiente forma para una matriz cuadrada, ejemplo matriz cuadrada de tamaño 5.
Para ello necesitamos cuatro for’s que recorran los cuatro lados y uno extra para que repita esa operación en el caso de una dimensión 5 deberá repetirlo 2 veces y colocar un numero mas en el centro, en el caso de dimensión par entonces repetimos dimensión dividido entre 2 veces.
En el diagrama de flujo, n es la dimensión de la matriz cuadrada y x es un numero con cual empezara a generar la matriz caracol. Vean el algoritmo en lenguaje de programación Java.
public static int[][] generarMatrizCaracol(int n, int x) {
int[][] M = new int[n + 1][n + 1];
for (int a = 1; a <= n / 2; a++) {
for (int i = a; i <= n - a; i++) {
M[a][i] = x;
x++;
}
for (int i = a; i <= n - a; i++) {
M[i][n - a + 1] = x;
x++;
}
for (int i = n - a + 1; i >= a + 1; i--) {
M[n - a + 1][i] = x;
x++;
}
for (int i = n - a + 1; i >= a + 1; i--) {
M[i][a] = x;
x++;
}
}
if (n % 2 == 1) {
M[n / 2 + 1][n / 2 + 1] = x;
}
return M;
}Tomar en cuenta que se genero matriz a partir de la posición (1, 1) sin embargo para la primera posición para Java es (0, 0), eso se lo cambia de manera sencilla. Descárguense el algoritmo en lenguaje de programación Java.
Descargar Código Fuente (.java)
También otro problema clásico es generar esta misma matriz con un solo ciclo repetitivo, pídanla y la publico pronto.
ResponderEliminarman pon la de con un solo ciclo repetitivo
EliminarGracias por el aporte Me ha resultado curioso y entretenido entender el algoritmo
ResponderEliminarque buena pagina muy bien compañero felicidades
ResponderEliminarsube todo lo sea de informatica es interesante porfa.....
ResponderEliminarGracias por darse una vueltita por este blog, y muy pronto verán muchas novedades.
ResponderEliminarBuenas y como puedo hacer para que me funcione con matrices nxm
ResponderEliminarke suave la matriz... me ayudo mucho gracias...
ResponderEliminaresta muy bueno! existira un metodo mas corto para acerlo
ResponderEliminarpodrian ayudarme a resolver las torres de HANOI en lenguaje de c++por favor, no se como resolver, solo me dijeron q es muy conocido en programacion
ResponderEliminarpodrian ayudarme a resolver las torres de HANOI en lenguaje de c++por favor, no se como resolver, solo me dijeron q es muy conocido en programacion
ResponderEliminarPues podrias ver la solucion recursiva en http://es.wikipedia.org/wiki/Torres_de_Han%C3%B3i
ResponderEliminary puedes ver como funciona en http://soloinformaticayalgomas.blogspot.com/2011/03/solucion-animada-de-las-torres-de-hanoi.html
buenisiimooo gracias me sirvio bastante sube con un solo ciclo repetitivo¡¡¡¡ please¡¡¡¡
ResponderEliminargracias....
ResponderEliminarmuy bueno gracias
ResponderEliminarHola existe el clásico problema de las 8 reinas. La idea es ubicar 8 reinas en un tablero de ajedrez sin que estas se amenacen. Una solución simple e iterativa es ideal, también generalizar la solución a un tablero de N x N casillas con N reinas. ¿Lo desean ver?
ResponderEliminarcomapañero Daniel muy buena tu pagina felicidades!!... no se si me puedas ayudar con un problema de matriz la cua es EL CUBO MAGICO t lo agradeceria mucho si me ayudas el cubo consta de q
ResponderEliminarla suma de numeros de las filas, columnas y diagonal nos dan el mismo numero... t lo agradeceria mucho ya me ayudast con la matriz caracol gracias
mamas daniel!! esa es la solucion mas larga no les hagas ilucionar a los demas con tus soluciones triviales!
ResponderEliminarYo jamas dije la era la solución mas corta, (lee por favor) pero si es la opción natural, te aconsejo que busques la definición de trivial. Saludos.
Eliminarhepl??? necesito generar la matriz caracol.. pero q exista un tiempo desde q apacere la primera a la segunda.. q cada una vaya apareciendo en un determinado tiempo.. en windows from.. porfa..
ResponderEliminartiene como resolver esta?
ResponderEliminardado a ordem 5?
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
muy bacan el codigo
ResponderEliminary como sería en c++??
ResponderEliminar