Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Mac en 27 de Agosto 2014, 09:14
-
Estoy haciendo este programa y no he podido solucionarlo
Me acostado un poco el tema de Recursiva en Java
o Crear una clase donde tenga métodos para manejo de una matriz:
o Para llenar matriz
o Para mostrar matriz
o Para hallar el menor de la matriz
Coloco el codigo
package matrizrecursiva;
import java.util.Scanner;
public class matrixita {
private int [][]matriz = {{2,4,4},{6,6,9},{8,10,12}};
int sw=0;
int sw1=0 ;
public void llenar_matriz(int i, int j, int filas, int columnas) {
Scanner teclado = new Scanner(System.in);
if (sw == 0) {
if (i < filas) {
if (j < columnas) {
System.out.println("digite numero de posicion " + " " + i + " " + j);
matriz[i][j] = teclado.nextInt(); // la puta madreeeeeeee >.<
llenar_matriz(i, j + 1, filas, columnas);
}
if (j == columnas) {
llenar_matriz(i + 1, 0, filas, columnas);
}
} else {
System.out.println("matriz llenada satisfactoriamente");
sw = 1;
}
}
}
public void mostrar_matriz(int i, int j, int filas, int columnas) {
if(sw1==0)
{
if (i < filas) {
if (j < columnas) {
System.out.println("- " + i + " " + j);
System.out.println(matriz[i][j]);
llenar_matriz(i, j + 1, filas, columnas);
}
if(j==columnas)
{
System.out.println("-----------------------------------");
llenar_matriz(i + 1, 0, filas, columnas);
}
}
else
{ sw1=1;
}
}
}
public void mostrar_menor_matriz(int i, int j, int filas, int columnas, int i1, int j1) {
int menor;
if (i < filas) {
if (j < columnas) {
System.out.println("- " + i + " " + j);
if (matriz[i][j] < matriz[i1][j1]) {
menor = matriz[i][j];
} else {
menor = matriz[i1][j1];
}
llenar_matriz(i, j + 1, filas, columnas);
}
llenar_matriz(i + 1, 0, filas, columnas);
}
}
}
----------------------------------------------------------------------------------------------------------
package matrizrecursiva;
import java.util.Scanner;
/**
*
* @author user1
*/
public class MatrizRecursiva {
public static void main(String[] Args) {
int filas;
int columnas;
matrixita mi_matriz = new matrixita();
Scanner leer = new Scanner(System.in);
System.out.println("digite el numero de filas ");
filas = leer.nextInt();
System.out.println("digite el numero de columnas ");
columnas = leer.nextInt();
mi_matriz.llenar_matriz(0, 0, filas, columnas);
System.out.println("--------------- matriz-----------------");
mi_matriz.mostrar_matriz(0,0, filas, columnas);
System.out.println("el menor dato de la matriz :");
mi_matriz.mostrar_menor_matriz(0, 0, filas, columnas,0,0);
}
}
-
Bueno, he estado repasando tu código y tienes fallos de falta de atención...
en la clase matrixita (que dicho sea vaya nombrecito...):
- Bueno, dentro del método mostrar_matriz(..) estas llamando al método llenar_matriz(...).
Esto no debe ser así, es un método recursivo, se debería llamar a si mismo...
- Bueno, dentro del método mostrar_menor_matriz(..), te vuelve a pasar lo mismo estas llamando al método llenar_matriz(...).
- Por otro lado en el método mostrar_menor_matriz(...), encuentras el menor, pero no lo devuelves...
A parte de todo esto están los errores que estas cometiendo en cuanto al nombre de métodos, atributos, variables, parámetros, clases, etc.... No cumples con los estándares, y eso en el futuro te acarreará problemas...
En fin, mira he modificado tu código para que funcione, échale un ojo y comparalo con el que tenias para que veas las diferencias...
Clase Matrixita
import java.util.Scanner;
public class Matrixita {
private int[][] matriz = {{2, 4, 4}, {6, 6, 9}, {8, 10, 12}};
int sw = 0;
int sw1 = 0;
public int[][] llenar_matriz(int i, int j, int filas, int columnas) {
Scanner teclado = new Scanner(System.in);
if (sw == 0) {
if (i < filas) {
if (j < columnas) {
System.out.println("digite numero de posicion " + " " + i + " " + j);
matriz[i][j] = teclado.nextInt(); // la puta madreeeeeeee >.<
llenar_matriz(i, j + 1, filas, columnas);
}
if (j == columnas) {
llenar_matriz(i + 1, 0, filas, columnas);
}
} else {
System.out.println("matriz llenada satisfactoriamente");
sw = 1;
}
}
return this.matriz;
}
public void mostrar_matriz(int i, int j, int filas, int columnas) {
if (sw1 == 0) {
if (i < filas) {
if (j < columnas) {
System.out.println("- " + i + " " + j);
System.out.println(matriz[i][j]);
mostrar_matriz(i, j + 1, filas, columnas);
}
if (j == columnas) {
System.out.println("-----------------------------------");
mostrar_matriz(i + 1, 0, filas, columnas);
}
} else {
sw1 = 1;
}
}
}
public int mostrar_menor_matriz(int i, int j, int filas, int columnas, int i1, int j1) {
int menor = 1000;
if (i < filas) {
if (j < columnas) {
//System.out.println("- " + i + " " + j);
if (matriz[i][j] < matriz[i1][j1]) {
menor = matriz[i][j];
} else {
menor = matriz[i1][j1];
}
mostrar_menor_matriz(i, j + 1, filas, columnas, i1, j1);
}
mostrar_menor_matriz(i + 1, 0, filas, columnas, i1, j1);
}
return menor;
}
}
Clase MatrizRecursiva:
import java.util.Scanner;
public class MatrizRecursiva {
public static void main(String[] Args) {
int filas;
int columnas;
Matrixita mi_matriz = new Matrixita();
Scanner leer = new Scanner(System.in);
System.out.println("digite el numero de filas ");
filas = leer.nextInt();
System.out.println("digite el numero de columnas ");
columnas = leer.nextInt();
int[][] matriz = mi_matriz.llenar_matriz(0, 0, filas, columnas);
System.out.println("--------------- matriz-----------------");
mi_matriz.mostrar_matriz(0, 0, filas, columnas);
System.out.println("el menor dato de la matriz :");
int menor = mi_matriz.mostrar_menor_matriz(0, 0, filas, columnas, 0, 0);
System.out.println(menor);
}
}
Y nada tio yo veo que mas o menos el código lo controlas, pero necesitas por un lado repasar conceptos básicos y por otro lado y lo mas importante... prestar atención en lo que haces.
Bueno un saludo!!
-
dongo dongo
Tio Gracias Por todo !!
Excelente ! me colocare a repasar conceptos !
Gracias Nuevamente :D :D !