Generar matrices en 'espiral'

Iniciado por AndenBomber, 25 Octubre 2008, 03:56 AM

0 Miembros y 1 Visitante están viendo este tema.

AndenBomber

Hola comunidad elhacker.net!
Necesito ayuda tratando de generar la siguiente sucesion de matrices:




Osea, ingresar un entero (el orden de la matriz), y que el programa devuelva la matriz 'espiral' de dicho orden.
¿Alguna idea para generar dicha matriz?
Programo en Java, con el JCreator.
Gracias por su tiempo, salu2 ! 

:ohk<any>

Hola :D

Antes que nada decirte que por aqui a ese llenado le dicen el caracol, y tambien mencionarte que ya estaba resuelto mas abajo :P

Metodo LLenar Matriz Caracol

Código (java) [Seleccionar]

public static void llenarmatrizcaracol(int mat[][],int n,int m)
    {
        int fil,col,aux,cont,k; //Nos creamos variables de tipo entero
        cont=1;                   //Inicializamos un contador
        for(k=0;k<m;k++)
        {
        col=k;
                for(fil=k;fil<=(m-1-k);fil++)
                {
                mat[fil][col]=cont;
                cont++;
                }
        fil=m-1-k;
                for(col=k+1;col<=n-1-k;col++)
                {
                mat[fil][col]=cont;
                cont++;
                }
        col=n-1-k;
                for(fil=m-2-k;fil>=k;fil--)
                {
                mat[fil][col]=cont;
                cont++;
                }
        fil=k;
                for(col=n-2-k;col>=k+1;col--)
                {
                mat[fil][col]=cont;
                cont++;
                }
        }
        return;
    }


Método Mostrar Matriz

Código (java) [Seleccionar]

public static void mostrarmatriz(int mat[][],int n,int m)
    {             
        for(int fil=0;fil<m;fil++)
        {
            System.out.println("");
            for(int col=0;col<n;col++)
            {
            System.out.print("\t"+mat[fil][col]);
            }
        }       
        return;
    }   


Método Main

Código (java) [Seleccionar]

public static void main(String args[])
{
        int mat[][];                              //Creamos una matriz
        int n,m;                                   //Creamos variables
        mat=new int[1000][1000];        //Inicializamos la matriz
        n=5;                                       //Inicializamos las variables
        m=5;
        llenarmatrizfila(mat,n,m);         //Llamamos el metodo para llenar la matriz
        mostrarmatriz(mat,n,m);          //Imprimimos en pantalla la matriz
}


Listo, esta hecho en java

Un saludo
OHK
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

AndenBomber

Muchas gracias  ;D
En verdad, no sabía como buscarlo... se me ocurrio decirle 'espiral', aunque resultó ser 'caracol'  :xD
Muchas gracias nuevamente  :rolleyes:

JOSEATT

hola amigo, se q ese codigo lo hiciste para java, pero quiero pedirte de favor que si me lo puedes hacer para c++
perdona que moleste a estas horas pero me urge para mañana,
de antemano muchisimas gracias