Autor Tema: Matriz Recursiva Java  (Leído 16252 veces)

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Matriz Recursiva Java
« 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);
    }

}
« Última modificación: 28 de Agosto 2014, 10:00 por Alex Rodríguez »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ayuda Urgente ! Matriz Recursiva Java
« Respuesta #1 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...):

  • 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
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!!
« Última modificación: 27 de Agosto 2014, 19:50 por dongo »

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Re:Ayuda Urgente ! Matriz Recursiva Java
« Respuesta #2 en: 28 de Agosto 2014, 04:59 »
dongo dongo

Tio Gracias Por todo !!

Excelente ! me colocare a repasar conceptos !

Gracias Nuevamente :D :D  !

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".