Foro de elhacker.net

Programación => 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
  1. public static void llenarmatrizcaracol(int mat[][],int n,int m)
  2.    {
  3.        int fil,col,aux,cont,k; //Nos creamos variables de tipo entero
  4.        cont=1;                   //Inicializamos un contador
  5.        for(k=0;k<m;k++)
  6.        {
  7.        col=k;
  8.                for(fil=k;fil<=(m-1-k);fil++)
  9.                {
  10.                mat[fil][col]=cont;
  11.                cont++;
  12.                }
  13.        fil=m-1-k;
  14.                for(col=k+1;col<=n-1-k;col++)
  15.                {
  16.                mat[fil][col]=cont;
  17.                cont++;
  18.                }
  19.        col=n-1-k;
  20.                for(fil=m-2-k;fil>=k;fil--)
  21.                {
  22.                mat[fil][col]=cont;
  23.                cont++;
  24.                }
  25.        fil=k;
  26.                for(col=n-2-k;col>=k+1;col--)
  27.                {
  28.                mat[fil][col]=cont;
  29.                cont++;
  30.                }
  31.        }
  32.        return;
  33.    }
  34.  

Método Mostrar Matriz

Código
  1. public static void mostrarmatriz(int mat[][],int n,int m)
  2.    {            
  3.        for(int fil=0;fil<m;fil++)
  4.        {
  5.            System.out.println("");
  6.            for(int col=0;col<n;col++)
  7.            {
  8.            System.out.print("\t"+mat[fil][col]);
  9.            }
  10.        }        
  11.        return;
  12.    }    

Método Main

Código
  1. public static void main(String args[])
  2. {
  3.        int mat[][];                              //Creamos una matriz
  4.        int n,m;                                   //Creamos variables
  5.        mat=new int[1000][1000];        //Inicializamos la matriz
  6.        n=5;                                       //Inicializamos las variables
  7.        m=5;
  8.        llenarmatrizfila(mat,n,m);         //Llamamos el metodo para llenar la matriz
  9.        mostrarmatriz(mat,n,m);          //Imprimimos en pantalla la matriz
  10. }

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