Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: :ohk<any> en 25 Julio 2008, 22:03 pm



Título: Ejercicios simples en Java
Publicado por: :ohk<any> en 25 Julio 2008, 22:03 pm
Hola Foro

Voy a lanzar un ejercicio y esperar a quien lo resuelva y al final del plazo voy a resolverlo con una breve explicación. (Ruego por la aprovación del Moderador de este Foro)

Los ejercicios no son muy dificiles, ya que es mas para ayudar y orientar a los mas novatos.

DATOS

Objetivo: Para los novatos, desarrollar Lógica.

Utilizando el Lenguaje de Programación Java, genere la siguiente matriz:

Matriz 1

   0  0  0  0  1
   0  0  0  1  2
   0  0  1  2  3
   0  1  2  3  4
   1  2  3  4  5

La matriz debe generarse dependiendo el número que el usuario asigne:
Si el usuario asigna 5, debe generarse una matriz de 5 por 5 como la que se ve en el primer ejemplo, en caso de ser 4, debe generar una Matriz de 4 por 4:

   0  0  0  1
   0  0  1  2
   0  1  2  3
   1  2  3  4

El codigo debe ser expuesto y debidamente comentado en el hilo dentro de las etiquetas Code.
El plazo para resolver esta ejercicio es de 8 días. Luego de ese tiempo, pasaré a mostrar el ejercicio resuelto.

En caso de que el ejercicio sea resuelto en menos de 2 días se proseguira a plantear un nuevo ejercicio, bajo este mismo hilo o en un nuevo post, dependiendo si la situación lo amerita.

Un saludo y a Programar :D

OHK


Título: Re: Ejercicios simples en Java
Publicado por: carlitos.dll en 25 Julio 2008, 22:42 pm
pregunta: ¿se debe realizar solo el método que crea la matriz, o también el método main()?



Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 25 Julio 2008, 22:54 pm
Yo creo que el main() lo vas a usar vos mientras pruebas lo que hiciste, yo no voy a necesitarlo, puedo hacer mi clase y llamar a tu metodo, pero... te recuerdo que este ejercicio tiene como fin ayudar a los mas novatos.

Osea que es mejor si posteamos todo sin falta.
Un saludo

OHK


Título: Re: Ejercicios simples en Java
Publicado por: v.antrax en 25 Julio 2008, 23:05 pm
E Aqui tienes el pequeño programa en codigo.. bye..


Código:
public class m_1
{
  public static void main(String jorge [])
  {
  int n,m_matriz[][],cont,aux;
n=5; aux=0;cont=1;
m_matriz[][]= new int [n][n];

for(int fil=n-1;fil >=0 ;fil--)
{
   for(int col= aux ; col< n ; col++ )
   {

m_matriz[fil][col]=cont;
cont ++;
   }
   
            cont=1;
    aux++;
   
}
        // mostrar matriz
for(int fil=0;fil <n ;fil++)
{
   for(int col= 0 ; col < n ; col++ )
   {

System.out.print(\t m_matriz[fil][col]);
   }
   
}

  }

}


Título: Re: Ejercicios simples en Java
Publicado por: v.antrax en 25 Julio 2008, 23:08 pm
Yo creo que el main() lo vas a usar vos mientras pruebas lo que hiciste, yo no voy a necesitarlo, puedo hacer mi clase y llamar a tu metodo, pero... te recuerdo que este ejercicio tiene como fin ayudar a los mas novatos.

Osea que es mejor si posteamos todo sin falta.
Un saludo

OHK

Mejor que lo muestre todo el programa no crees es las facil


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 25 Julio 2008, 23:13 pm
E Aqui tienes el pequeño programa en codigo.. bye..


Código:
public class m_1
{
  public static void main(String jorge [])
  {
  int n,m_matriz[][],cont,aux;
n=5; aux=0;cont=1;
m_matriz[][]= new int [n][n];

for(int fil=n-1;fil >=0 ;fil--)
{
   for(int col= aux ; col< n ; col++ )
   {

m_matriz[fil][col]=cont;
cont ++;
   }
   
            cont=1;
    aux++;
   
}
        // mostrar matriz
for(int fil=0;fil <n ;fil++)
{
   for(int col= 0 ; col < n ; col++ )
   {

System.out.print(\t m_matriz[fil][col]);
   }
   
}

  }

}

Tu codigo me ha generado 2 Errores
Código:
System.out.print(\t m_matriz[fil][col]);

debería ser asi:

Código:
System.out.print("\t" + m_matriz[fil][col]);



Código:
m_matriz[][]= new int [n][n];

debería ser asi:

Código:
m_matriz = new int [n][n];



Ahora bien, los resultados no son los esperados.
0       1       2       3       4       1       2       3       4       5

No es lo que había pedido.
Gracias por Intentar
En la brevedad posible voy a explicar que hiciste en tu codigo.

Un saludo

OHK

Advertencia - mientras estabas leyendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 25 Julio 2008, 23:34 pm
La respuesta ha roto con el objetivo de este ejercicio ya que no muestra ningún tipo de comentario ni ayuda.

De todas formas voy a tratar de interpretarlo.

Código
  1. public class m_1
  2. {
  3.  public static void main(String jorge [])
  4.  {
  5. int n,m_matriz[][],cont,aux;
  6. n=5; aux=0;cont=1;
  7. m_matriz[][]= new int [n][n];
  8.  
  9. for(int fil=n-1;fil >=0 ;fil--)
  10. {
  11.   for(int col= aux ; col< n ; col++ )
  12.   {
  13.  
  14. m_matriz[fil][col]=cont;
  15. cont ++;
  16.   }
  17.  
  18.            cont=1;
  19.    aux++;
  20.  
  21. }
  22.        // mostrar matriz
  23. for(int fil=0;fil <n ;fil++)
  24. {
  25.   for(int col= 0 ; col < n ; col++ )
  26.   {
  27.  
  28. System.out.print(\t m_matriz[fil][col]);
  29.   }
  30.  
  31. }
  32.  
  33.  }
  34.  
  35. }

Como se puede apreciar le ha dado un nombre no muy significativo, pero por ahora eso es lo de menos.

Código
  1. public static void main(String jorge [])

Aqui inicializamos en metodo principal denominado main();
El metodo main es el cerebro de cualquier aplicación en Java...
Para mas información sobre este metodo visite este link (http://www.cica.es/formacion/JavaTut/Cap2/fecha.html).

Código
  1.        int n,m_matriz[][],cont,aux;
  2. n=5; aux=0;cont=1;
  3. m_matriz = new int [n][n];
  4.  

En estas 3 lineas de codigo ha definido sus variables de tipo int (entero) en la primera linea:
en la segunda linea le ha asignado un valor inicial:
en la tercera linea a inicializado la matriz new int [][].

Código
  1. for(int fil=n-1;fil >=0 ;fil--)
  2. {
  3.   for(int col= aux ; col< n ; col++ )
  4.   {
  5.  
  6. m_matriz[fil][col]=cont;
  7. cont ++;
  8.   }
  9.  
  10.            cont=1;
  11.    aux++;
  12.  
  13. }
  14.  

En la primera linea a iniciado el conteo de una variable utilizando el for, esto para recorrer por la matriz. Como pueden ver el valor inicial empieza en el numero maximo introducido y descuenta conforme a las condiciones.

en la sexta linea
Código
  1. m_matriz[fil][col]=cont;
esta dando un valor numérico a la posición donde se encuentra la matriz, utilizando el valor que tiene la variable cont en ese instante.

Y luego en la siguiente linea incrementa su contador.
Recordemos que es una forma válida de incrementar un contador. variable++

Código
  1. // mostrar matriz
  2. for(int fil=0;fil <n ;fil++)
  3. {
  4.   for(int col= 0 ; col < n ; col++ )
  5.   {
  6.  
  7. System.out.print("\t" + m_matriz[fil][col]);
  8.   }
  9.  
  10. }
  11.  

En estas lineas de codigo como lo comentado indica, se esta imprimiendo en pantalla el resultado de el recorrido de la matriz.

Código
  1. System.out.print("\t" + m_matriz[fil][col]);

Recordemos que para la concatenación necesitamos utilizar el simbolo '+'
Un saludo, espero que el codigo este mas claro, a pesar de que no cumple con lo solicitado.

OHK


Título: Re: Ejercicios simples en Java
Publicado por: carlitos.dll en 26 Julio 2008, 01:35 am
Quedo debiendo el método main()

Código
  1. /**
  2.  * MatrizCuadrada.java
  3.  *
  4.  * @author CarlitoS.dll
  5.  * @version 25-07-2008
  6.  */
  7. public class MatrizCuadrada
  8. {
  9.    private int[][] matriz;
  10.  
  11.    /**
  12.      * Constructor sin parámetros
  13.      */
  14.    public MatrizCuadrada()
  15.    {
  16.        this(5);
  17.    }
  18.  
  19.    /**
  20.      * Constructor con parámetros
  21.      */
  22.    public MatrizCuadrada(int tamaño)
  23.    {
  24.        if (tamaño > 0)
  25.        {
  26.            llenarMatrizCuadrada(tamaño);
  27.        }
  28.        else
  29.        {
  30.            System.out.println("El  tamaño mínimo de la matriz cuadrada es 1.");
  31.        }
  32.    }
  33.  
  34.  
  35.    /**
  36.      * Método accesador de la matriz
  37.      * @return Devuelve una matriz cuadrada
  38.      */
  39.    public int[][] getMatriz()
  40.    {
  41.        return matriz;
  42.    }
  43.  
  44.  
  45.    /**
  46.      * Método de acceso privado que crea la matriz
  47.      * @param Recibe un int para el tamaño de la matriz
  48.      */
  49.    private void llenarMatrizCuadrada(int tamaño)
  50.    {
  51.        matriz = new int[tamaño][tamaño];
  52.  
  53.  
  54.        /* For para recorrer las filas */
  55.        for (int indiceFilas = tamaño -1; indiceFilas >= 0; indiceFilas--)
  56.        {
  57.            int posicion = indiceFilas + 1;
  58.  
  59.            /*For para recorrer las columnas */
  60.            for (int indiceColumnas = tamaño -1; indiceColumnas >= 0; indiceColumnas--)
  61.            {
  62.                matriz[indiceFilas][indiceColumnas] = posicion >= 0 ? posicion : 0;
  63.                posicion--;
  64.            }
  65.        }
  66.    }
  67.  
  68. }
  69.  
  70.  


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 26 Julio 2008, 02:28 am
:D

Resultado:

Código
  1. /**
  2.  * MatrizCuadrada.java
  3.  *
  4.  * @author CarlitoS.dll
  5.  * @version 25-07-2008
  6.  */


54321
43210
32100
21000
10000


 :P, demos 1 día mas, para ver que dicen los demas.
En hora buena, aunque el resultado esta invertido  :P

Voy a hecharle un ojo a tu codigo.
Mientras aprovecha en postear el Main();

Un saludo

OHK


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 31 Julio 2008, 02:55 am
mm, no le veo mucho futuro a seguir esperando mas respuestas  :¬¬

Mejor lanzamos el siguiente ejercicio:

Bajo las bases ya propuestas en el principio del hilo, realizar la siguiente 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


Un saludo y suerte.


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 10 Agosto 2008, 06:24 am
 :¬¬ :¬¬

será que esta muy dificil?
mmm, o es que no hay muchos programadores bajo Java interesados en practicar un poco...  :P

Bueno, lo dejo 2 días mas y luego lo resuelvo.

Un saludo

OHK


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 15 Agosto 2008, 05:46 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
  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.    }    
  13.  

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. }
  11.  

Java
Un saludo

OHK


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 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


Título: Re: Ejercicios simples en Java
Publicado por: Newbie´s en 23 Agosto 2008, 09:11 am
Jje... llegue tarde... :P

Fijate en el método main(), hay un leve error... no sé si lo has puesto apropósito o no... pero hay un error...

Además... la salida no es la que buscas... haces la inversa a la que haces mención... :P

Código
  1. 1 16 15 14 13
  2. 2 17 24 23 12
  3. 3 18 25 22 11
  4. 4 19 20 21 10
  5. 5 6 7 8 9

Aún asi, buen code... :D

Pero pienso que en el método main(), se podrían hacer un poco menos de lineas de código...

Código
  1. public static void main(String[] args)
  2. {
  3.    int man[][] =new int[1000][1000];
  4.    int n=5, m=5;
  5.    ....
  6. }
  7.  

Saludos


Título: Re: Ejercicios simples en Java
Publicado por: :ohk<any> en 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


Título: Re: Ejercicios simples en Java
Publicado por: Newbie´s en 29 Agosto 2008, 05:59 am
Guaaa... con matrices no soy muy bueno... pero haré lo que pueda... :P...

Otro tipo de ejercicios ???... :P... xD

Saludos cordiales...