Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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..



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
Cita de: ohk 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

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
Cita de: jorgecarpio en 25 Julio 2008, 23:05 PM
E Aqui tienes el pequeño programa en codigo.. bye..



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

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


debería ser asi:


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





m_matriz[][]= new int [n][n];

debería ser asi:

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 (java) [Seleccionar]
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]);
   }
   
}

  }

}


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

Código (java) [Seleccionar]
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 (java) [Seleccionar]

        int n,m_matriz[][],cont,aux;
n=5; aux=0;cont=1;
m_matriz = new int [n][n];


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 (java) [Seleccionar]

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

m_matriz[fil][col]=cont;
cont ++;
   }
   
            cont=1;
    aux++;
   
}


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 (java) [Seleccionar]
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 (java) [Seleccionar]

// mostrar matriz
for(int fil=0;fil <n ;fil++)
{
   for(int col= 0 ; col < n ; col++ )
   {

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


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

Código (java) [Seleccionar]
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 (java) [Seleccionar]

/**
* MatrizCuadrada.java
*
* @author CarlitoS.dll
* @version 25-07-2008
*/
public class MatrizCuadrada
{
    private int[][] matriz;

    /**
     * Constructor sin parámetros
     */
    public MatrizCuadrada()
    {
        this(5);
    }
   
    /**
     * Constructor con parámetros
     */
    public MatrizCuadrada(int tamaño)
    {
        if (tamaño > 0)
        {
            llenarMatrizCuadrada(tamaño);
        }
        else
        {
            System.out.println("El  tamaño mínimo de la matriz cuadrada es 1.");
        }
    }
   
   
    /**
     * Método accesador de la matriz
     * @return Devuelve una matriz cuadrada
     */
    public int[][] getMatriz()
    {
        return matriz;
    }
   
   
    /**
     * Método de acceso privado que crea la matriz
     * @param Recibe un int para el tamaño de la matriz
     */
    private void llenarMatrizCuadrada(int tamaño)
    {
        matriz = new int[tamaño][tamaño];
       
       
        /* For para recorrer las filas */
        for (int indiceFilas = tamaño -1; indiceFilas >= 0; indiceFilas--)
        {
            int posicion = indiceFilas + 1;
           
            /*For para recorrer las columnas */
            for (int indiceColumnas = tamaño -1; indiceColumnas >= 0; indiceColumnas--)
            {
                matriz[indiceFilas][indiceColumnas] = posicion >= 0 ? posicion : 0;
                posicion--;
            }
        }
    }

}

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

Resultado:

Código (java) [Seleccionar]
/**
* MatrizCuadrada.java
*
* @author CarlitoS.dll
* @version 25-07-2008
*/



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
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
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 (java) [Seleccionar]
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
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 (java) [Seleccionar]

public static void main(String[] args)
{
    int man[][] =new int[1000][1000];
    int n=5, m=5;
    ....
}


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