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
pregunta: ¿se debe realizar solo el método que crea la matriz, o también el método main()?
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
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]);
}
}
}
}
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
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
OHKAdvertencia - mientras estabas leyendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
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.
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.
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).
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 [][].
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 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++
// 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.
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
Quedo debiendo el método main()
/**
* 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--;
}
}
}
}
:D
Resultado:
/**
* 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
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.
:¬¬ :¬¬
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
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
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
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
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
}
JavaUn saludo
OHK
Supongo que con esto terminamos este hilo, ya que no veo usuarios con interes en resolver los ejercicios. :¬¬
Nos vemos
Un saludo
OHK
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
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...
public static void main(String[] args)
{
int man[][] =new int[1000][1000];
int n=5, m=5;
....
}
Saludos
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
Guaaa... con matrices no soy muy bueno... pero haré lo que pueda... :P...
Otro tipo de ejercicios ???... :P... xD
Saludos cordiales...