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

Título: Matriz Recursiva Java
Publicado 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

Código: [Seleccionar]
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);
        }

    }

}
----------------------------------------------------------------------------------------------------------

Código: [Seleccionar]
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);
    }

}
Título: Re:Ayuda Urgente ! Matriz Recursiva Java
Publicado por: dongo en 27 de Agosto 2014, 19:16
Bueno, he estado repasando tu código y tienes fallos de falta de atención...

en la clase matrixita (que dicho sea vaya nombrecito...):


Esto no debe ser así, es un método recursivo, se debería llamar a si mismo...



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
Código: [Seleccionar]
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:

Código: [Seleccionar]
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!!
Título: Re:Ayuda Urgente ! Matriz Recursiva Java
Publicado por: Mac en 28 de Agosto 2014, 04:59
dongo dongo

Tio Gracias Por todo !!

Excelente ! me colocare a repasar conceptos !

Gracias Nuevamente :D :D  !