Ejercicios simples en Java

Iniciado por :ohk<any>, 25 Julio 2008, 22:03 PM

0 Miembros y 1 Visitante están viendo este tema.

:ohk<any>

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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

carlitos.dll

pregunta: ¿se debe realizar solo el método que crea la matriz, o también el método main()?


:ohk<any>

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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

v.antrax

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]);
   }
   
}

  }

}

v.antrax

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

:ohk<any>

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.
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

:ohk<any>

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.

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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

carlitos.dll

#7
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--;
            }
        }
    }

}


:ohk<any>

: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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

:ohk<any>

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.
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.