elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Impementar un metodo ordenar!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Impementar un metodo ordenar!!!  (Leído 12,622 veces)
XxArCaNgElxX

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Impementar un metodo ordenar!!!
« en: 26 Junio 2011, 19:30 pm »

Buenas a todos!!!
Hace dias q ue estoy tratando de resolver este problema y no le doy solucion aun es por eso q recurro aca!!!

mi problema es este   Pila1(3 elementos)+Pila2(5elementos)=PIla3(8elementos aca el detalle que me vote los elemntos ordenados en una tercera pila)
Mi codigo:
la parte combinar busque manera de hacerlo esa parte no sta bien q digamos.
Código
  1. package tad_pila;
  2.  
  3.  
  4. /**
  5.  *
  6.  * @author Administrador//algoritmo 3.3
  7.  * apilar = cuando almacenamos valores
  8.  * lalalalalalala gracias
  9.  * desapliar=cuando retiramos los valores
  10.  */
  11. public class TADPila{
  12.  
  13.    private int TOPE;
  14.    private int MAX=10;
  15.    private int [] Datos;
  16.    private int bandera;
  17.  
  18.  
  19.    //contructor
  20.    public TADPila(){
  21.        Datos= new int[MAX];//crear la pila
  22.  
  23.  
  24.    }
  25.  
  26.    public boolean pilaVacia() {
  27.        //throw new UnsupportedOperationException("Not supported yet.");
  28.        if(TOPE==0)
  29.            return true;
  30.        else
  31.            return false;
  32.    }
  33.  
  34.    public boolean pilaLlena() {
  35.        //throw new UnsupportedOperationException("Not supported yet.");
  36.        if(TOPE==MAX)
  37.            return true;
  38.        else
  39.            return false;
  40.    }
  41.  
  42.    public void apilar(int dato) {
  43.        //throw new UnsupportedOperationException("Not supported yet.");
  44.        if(pilaLlena()){
  45.            System.out.println("Desbordamiento..... Pila Llena:");
  46.        }else{
  47.            TOPE+=1;
  48.            Datos[TOPE]=dato;
  49.        }
  50.    }
  51.  
  52.    public int desapilar() {
  53.        //throw new UnsupportedOperationException("Not supported yet.");
  54.        int dato=-999;
  55.        if(pilaVacia()){
  56.            System.out.println("Underflow.. Pila Vacia:");
  57.        }else{
  58.            dato= Datos[TOPE];
  59.            TOPE-=1;
  60.        }
  61.        return dato;
  62.  
  63.    }
  64.  
  65.      public void escribirPila2 (TADPila pila)
  66.      {
  67.            int elem;
  68.            if (!pila.pilaVacia ())
  69.            {
  70.  
  71.                elem = pila.desapilar ();
  72.                System.out.println(elem);
  73.                escribirPila2 (pila);
  74.                pila.apilar (elem);
  75.            }
  76.  
  77.        }
  78.      public void imprimirPila()
  79.    {
  80.  
  81.            int dato=0;
  82.  
  83.        for(int i=TOPE; i>0;i--){
  84.  
  85.            dato= Datos[i];
  86.            System.out.println(dato);
  87.        }
  88.  
  89.    }
  90.  
  91.  
  92.    public void combinar(TADPila p1,TADPila p2)
  93.    {
  94.  
  95.        int f,t;
  96.  
  97.        for(int i=TOPE; i>0;i--){
  98.  
  99.  
  100.        System.out.println(   f= p1.desapilar());
  101.             System.out.println(   t= p2.desapilar());
  102.  
  103.             if(f<t)
  104.                 p1.apilar(t);
  105.             else if(t>t)
  106.                 p1.apilar(t);
  107.  
  108.             System.out.println(p1);
  109.  
  110.  
  111.        }
  112.  
  113.  
  114.  
  115.     }
Mi main donde llamo mis metodos
Código
  1. public class Main {
  2.  
  3.    /**
  4.      * @param args the command line arguments
  5.      */
  6.    public static void main(String[] args) {
  7.  
  8.       TADPila p1= new TADPila();
  9.        TADPila p2= new TADPila();
  10.        TADPila p3= new TADPila();
  11.  
  12.        p1.apilar(9);
  13.        p1.apilar(1);
  14.        p1.apilar(3);  //3
  15.        p1.apilar(5); //1
  16.        p1.apilar(-1);
  17.        p2.apilar(2);
  18.        p2.apilar(8);
  19.        p2.apilar(77);
  20.  
  21.       p1.imprimirPila();
  22.       p1.combinar(p1, p2);


En línea

bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: Impementar un metodo ordenar!!!
« Respuesta #1 en: 27 Junio 2011, 04:39 am »

quieres hacer una estructura de DATOS????????????
 si lo q digo es cierto tu code esta muy MAL


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Impementar un metodo ordenar!!!
« Respuesta #2 en: 28 Junio 2011, 17:20 pm »

Sí, lo cierto y verdad es que el código está algo mal. Por ejemplo el método escribirPila2 no se que utilidad podrías darle, ya que cada pila tiene su propio método imprimir  :-\

Por otro lado el método combinar tienes varios fallos:

Código
  1. public void combinar(TADPila p1,TADPila p2)
  2. {
  3.        int f,t
  4.        for(int i=TOPE; i>0;i--){
  5.                System.out.println(   f= p1.desapilar());
  6.                System.out.println(   t= p2.desapilar());
  7.                if(f<t)
  8.                     p1.apilar(t);
  9.                 else if(t>t)
  10.                     p1.apilar(t);
  11.  
  12.                  System.out.println(p1);
  13.        }
  14. }

Por un lado estás suponiendo que P1 y P2 van a tener el mismo TOPE que la pila con la que realizas la llamada, cosa que no es ni por asomo segura.

Yo lo que haría sería pasar tan solo un argumento, y combinar la pila con la que se realiza la llamada al método, y la pila que se pasa como parámetro. Dentro del método tendría que construir una nueva pila vacía, e ir llenandola con los elementos correspondientes, podría ser algo así:

Código
  1. public TADPila combinar(TADPila p1){
  2.        TADPila resul = new TADPila();
  3.        while(!p1.pilaVacia() && !pilaVacia()){
  4.                int a, b;
  5.                a = p1.desapilar();
  6.                b = desapilar();
  7.                if(a<b){
  8.                        resul.apilar(a);
  9.                        apilar(b);
  10.                }
  11.                else if(a>=b){
  12.                        resul.apilar(b);
  13.                        p1.apilar(a);
  14.                }
  15.        }
  16.        //Aquí tendrías que comprobar si se han sacado todos los elementos de las dos pilas, si no, quedará alguna con elementos, los metes de golpe y ya está.
  17. }

El método que te he puesto supone que la insercción de los elementos en cada pila se ha hecho en orden, es decir, antes de llamar al método combinar se han insertado elementos en ambas pilas y se ha hecho de forma ordenada (ascendente). Si no habría que hacerlo de otra forma.

Saludos.
En línea

XxArCaNgElxX

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Impementar un metodo ordenar!!!
« Respuesta #3 en: 28 Junio 2011, 17:37 pm »

Bueno sabes los elementos apilados debe ser diferentes no deben star ordenados y de ahi unir y ordenar en una 3era pila usando un cualquier metodo de ordenamiento pero trabjando todo con las pilas!!!
« Última modificación: 2 Julio 2011, 02:26 am por XxArCaNgElxX » En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: Impementar un metodo ordenar!!!
« Respuesta #4 en: 1 Julio 2011, 15:05 pm »

Revisando tu codigo me di cuenta de que nunca inicias el int TOPE, no te da error esa variable?.
En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Impementar un metodo ordenar!!!
« Respuesta #5 en: 1 Julio 2011, 15:30 pm »

Si no me equivoco, las variables de tipo entero, si no las inicializas a ningún valor toman valor 0 de forma predeterminada, igual que los objetos toman null, los de tipo real 0.0 y los booleanos false.
En línea

ShotgunLogic

Desconectado Desconectado

Mensajes: 233


Claws so razor sharp


Ver Perfil
Re: Impementar un metodo ordenar!!!
« Respuesta #6 en: 1 Julio 2011, 15:41 pm »

Si no me equivoco, las variables de tipo entero, si no las inicializas a ningún valor toman valor 0 de forma predeterminada, igual que los objetos toman null, los de tipo real 0.0 y los booleanos false.
Si pero creo que eso depende de la versión de java que uses, y por eso no suele ser muy buena práctica dejarlo sin inicializar.
En línea

The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ordenar musica
Multimedia
wiz 0 1,326 Último mensaje 23 Abril 2006, 00:39 am
por wiz
ORDENAR FLEXGRID
Programación Visual Basic
V_INT_Y_2 0 1,308 Último mensaje 11 Mayo 2006, 00:46 am
por V_INT_Y_2
Ordenar 3 numeros
Programación Visual Basic
kontaminator 8 7,434 Último mensaje 24 Junio 2006, 01:05 am
por ReViJa
[Python] invocar metodo desde metodo.
Scripting
Hesp 2 6,993 Último mensaje 8 Marzo 2009, 00:38 am
por Hesp
Necesito agregar a mi archivo un metodo para ordenar - JAVA
Java
JAZzZ 1 2,767 Último mensaje 5 Agosto 2017, 21:40 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines