Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: indict en 6 Julio 2013, 21:12 pm



Título: ejercicio sencillo con PILAS
Publicado por: indict en 6 Julio 2013, 21:12 pm
Hola,

quiero hacer un programa, que me imprima por pantalla los elementos mayores de la pila respecto un entero dado.

No me muestra la pila, no se que debería rectificar.

ˇGracias por la ayuda!

Código
  1. #include<iostream>
  2. #include<queue>
  3. #include<stack>
  4. using namespace std;
  5.  
  6. stack<int>nueva(stack<int>&p, int x){
  7.    stack<int>p2;
  8.    while(!p.empty()){
  9.  
  10.    if(x>p.top()){
  11.             p2.push(p.top());    
  12.                  }
  13.    p.pop();
  14.                      }
  15.    return p2;
  16.    }
  17.  
  18. int main() {
  19.    int a,e;
  20.    stack<int>p1;
  21.    cout<<"element"<<endl;
  22.    cin>>a;
  23.  
  24.    cout<<"introduzca los elementos"<<endl;
  25.    cin>>e;
  26.    while(e!=0){
  27.                p1.push(e);
  28.                cin>>e;
  29.                }
  30.  
  31.  
  32.    cout<<endl;
  33.  
  34.    stack<int>p2=nueva(p1,a);
  35.  
  36.    cout<<"La pila final es"<<endl;
  37.    cout<<"[";
  38.    while(!p1.empty()){
  39.    cout<<p1.top()<<" ";
  40.    p1.pop();
  41.                      }
  42.    cout<<"]";
  43.  
  44.  
  45.  
  46.    system("pause");
  47.    return 0;
  48.    }


Título: Re: ejercicio sencillo con PILAS
Publicado por: rir3760 en 7 Julio 2013, 05:17 am
Ello se debe a que pasas una referencia y por ende la función "nueva" afecta a la variable "p1" declarada en la función main. La solución es simple: pasa la variable por valor.

Para ello solo debes cambiar la definición de la función a:
Código
  1. stack<int>nueva(stack<int> p, int x) ...

Otros cambios que debes realizar al programa son:
* Incluir el encabezado <cstdlib> antes de utilizar la función system.
* Al imprimir el resultado del programa debes utilizar la variable "p2".
* La función "nueva" crea una pila con los elementos menores que el indicado, debes cambiar la comparación "x > p.top()".

Un saludo


Título: Re: ejercicio sencillo con PILAS
Publicado por: indict en 10 Julio 2013, 19:15 pm
muchas gracias rir3760 por los consejos  ;D