Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: AndenBomber en 25 Octubre 2008, 03:56 AM

Título: Generar matrices en 'espiral'
Publicado por: AndenBomber en 25 Octubre 2008, 03:56 AM
Hola comunidad elhacker.net!
Necesito ayuda tratando de generar la siguiente sucesion de matrices:

(http://img139.imageshack.us/img139/9683/01ac4.jpg) (http://imageshack.us)
(http://img139.imageshack.us/img139/01ac4.jpg/1/w552.png) (http://g.imageshack.us/img139/01ac4.jpg/1/)

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 ! 
Título: Re: Generar matrices en 'espiral'
Publicado por: :ohk<any> en 25 Octubre 2008, 12:30 PM
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
Título: Re: Generar matrices en 'espiral'
Publicado por: AndenBomber en 26 Octubre 2008, 02:07 AM
Muchas gracias  ;D
En verdad, no sabía como buscarlo... se me ocurrio decirle 'espiral', aunque resultó ser 'caracol'  :xD
Muchas gracias nuevamente  :rolleyes:
Título: Re: Generar matrices en 'espiral'
Publicado por: JOSEATT en 8 Agosto 2012, 04:27 AM
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