Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - :ohk<any>

#721
Ejercicios / Ayuda con este ejercicio
27 Agosto 2008, 06:37 AM
Hola foro, me he topado con este ejercicio y no lo puedo resolver aún, a ver si uno de ustedes me puede echar una mano.

Bueno aquí la descripción.

Realizar de forma recursiva la siguiente matriz denominada ( cubo mágico ).

        8   1   6
        3   5   7
        4   9   2

El cubo mágico es una matriz impar (obligatorio) la cual proporciona un mismo resultado si sumas las filas o las columnas.

      8 + 1 + 6  =  15
      3 + 5 + 7  =  15
      4 + 9 + 2  =  15


      8 + 3 + 4  = 15

Bueno, creo que el punto esta claro hasta ahí.

Ahora bien, hay reglas de llenado de matriz, pues primero siempre debe llenarse la matriz por la fila 0 y en el medio.

Como hacemos esto?
n = tamaño de la matriz, por decir 5
n/2

        8   1   6
        3   5   7
        4   9   2

en nuestro ejemplo, el 1 se debe llenar 1ro.
Ahora bien, como es que llenamos todo lo demás.
Pues utilizamos el salto del caballo y las siguientes restricciones:

1ro.
                1

2do.
Haciendo salto:

De donde nos encontrábamos, nos movemos uno a la derecha y uno hacia arriba.

                         |
                   1  --

Pero que pasa, resulta que nos hemos salido de la matriz por encima de la matriz, entonces debemos utilizar la siguiente condicionante.

Si el numero a introducir cae fuera de la matriz se debe mover 1no a la derecha e ir a la parte de abajo de la matriz, como si fuera un pedazo de papel a la que hemos unido por ambos lados en forma de un cilindro.

        -   1   -
        -   -   -
        -   -   2

Ahora bien, si continuamos con la regla, avanzamos 1no a la derecha y uno hacia arriba, pero al avanzar a la derecha ya estamos fuera de la matriz, fuera de la columnas, entonces hacemos lo siguiente.

En ves de ir uno mas hacia la derecha, nos vamos hacia el principio y subimos de fila (o bajamos, dependiendo de como lo vean) y colocamos el numero donde debe ser.

        -   1    -
        3   -   -
        -   -   2

Ahora bien, siguiendo con el procedimiento nos movemos 1no a la derecha y 1no hacia arriba, pero que pasa, ahora resulta que la matriz en la posición que nos toca ocupar ya tiene un valor, entonces hacemos el siguiente procedimiento.

        -   1   -
        3   -   -
        4   -   2

Colocamos el siguiente número por debajo del número anterior, como se ve en el ejemplo.

Luego continuamos con los pasos y no encontramos ningún problema en el siguiente número, 1no a la derecha y 1no hacia arriba.

        -   1   -
        3   5   -
        4   -   2


He incluso no encontramos problemas hasta en el siguiente número. 1no derecha y 1no arriba.

        -   1   6
        3   5   -
        4   -   2


Continuando con las reglas avanzamos 1no a la derecha (y ya estamos fuera y por lo mismo consiguiente nos vamos al inicio de la columna) y subimos 1no, y ahora nos hemos salido de la fila y por lo mismo consiguiente nos vamos por debajo

        -   1   6
        3   5   -
        4   -   2

Pero como resultado tenemos el lugar ocupado, entonces recurrimos a:

CitarColocamos el siguiente número por debajo del número anterior

        -   1   6
        3   5   7
        4   -   2

Y lo hacemos según los procedimientos ya mencionados en los pasos anteriores hasta culminar con la matriz.

Ahora bien, cual es el axioma?

Nos preguntamos, cuando debe terminar de llenar?

Pues cuando haya llegado a 9 (que es el caso de nuestro ejemplo)
Lo cual podemos sacar con el tamaño de la matriz.

n = 5;  // Tamaño de la matriz

  if(contador == n*n)

Bueno, espero que el enunciado este claro.

Buena suerte!

Un saludo

OHK
#722
Ejercicios / Re: Ejercicios simples en Java
24 Agosto 2008, 03:48 AM
y si, hoy en día se hace de todo para reducir las líneas de código, usar la recursividad ya es muy común para resolver esta tipo de ejercicios.

mirad:

      1  1  1  1  1
      1  2  2  2  2
      1  2  4  4  4
      1  2  4  8  8
      1  2  4  8  16

Se debe resolver de forma recursiva.
Los parámetros de entrada, pueden ser, según su análisis.

int fila, int col, int contador, int mat[][]

Creo que no esta muy difícil, y este tipo de ejercicios ayuda mucho a desarrollar lógica.

Un saludo

OHK
#723
Multimedia / Re: Ayuda para una buena causa :)
16 Agosto 2008, 05:37 AM
Te recomiendo usar el Video Convert Master

Lo puedes pillar con el google. EN tu caso te va a ser muy útil.

Un saludo

OHK
#724
Cita de: Darioxhcx en 15 Agosto 2008, 07:08 AM
y el dia de los spammer ?
jajajajja ojala no llegue nunca ese dia jajajjaja =P
saludos

:¬¬ :¬¬

Muñeca System Car***

El día del Invitado  :xD

Todos los invitados no pueden acceder al foro  :xD :xD
#725
Ejercicios / Re: Ejercicios simples en Java
15 Agosto 2008, 05:48 AM
Supongo que con esto terminamos este hilo, ya que no veo usuarios con interes en resolver los ejercicios.  :¬¬

Nos vemos

Un saludo

OHK
#726
Ejercicios / Re: Ejercicios simples en Java
15 Agosto 2008, 05:46 AM
Cita de: ohk en 31 Julio 2008, 02:55 AM

Matriz Caracol de n X n


5 x 5


     1    2    3    4    5

     16  17  18  19   6

     15  24  25  20   7

     14  23  22  21   8

     13  12  11  10   9


4 x 4

     1    2    3    4

     12  13  14   5

     11  16  15   6

     10  9    8     7


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
}


Java
Un saludo

OHK
#727
Cita de: Carloswaldo en 14 Agosto 2008, 20:38 PM
Yo solo pido un iPod shuffle 2da generación de 2GB, de seguro me lo dan a mi que no ando pidiendo portatiles ni nada de eso ¬¬

queres entretenimiento ...

TOMA!!!

MUÑECA SYSTEM

:xD :xD :xD
#728
Cita de: Carloswaldo en 14 Agosto 2008, 05:18 AM
Yo apoyo la noción del día del Troll xD

aqui viene el despistado  :rolleyes:

que es un Troll ..¿?
es uno de warcraft que esta en la raza Orcos?

o son las criaturas del Señor de los anillos  :¬¬
#729
El día del Foro en General...
El regalo...
Un día de acceso total al subforo del Staff y a la Papelera  :¬¬
#730
Lo que mas produce mi país son Abogados  :xD
Creo que podríamos hechar una mano  :rolleyes: