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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ejercicio sencillo con PILAS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ejercicio sencillo con PILAS  (Leído 1,875 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
ejercicio sencillo con PILAS
« 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.    }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ejercicio sencillo con PILAS
« Respuesta #1 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


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: ejercicio sencillo con PILAS
« Respuesta #2 en: 10 Julio 2013, 19:15 pm »

muchas gracias rir3760 por los consejos  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda ejercicio sencillo (creo) Java
Java
Bestialazo 3 3,143 Último mensaje 29 Octubre 2007, 18:49 pm
por egyware
ayuda con ejercicio sencillo
Programación C/C++
Fer995 2 2,165 Último mensaje 30 Octubre 2010, 16:21 pm
por Fer995
ejercicio utilizando pilas en formulario en c#
.NET (C#, VB.NET, ASP)
XxFolkeNxX 0 2,758 Último mensaje 3 Diciembre 2011, 16:06 pm
por XxFolkeNxX
[Ayuda] Ejercicio sencillo en C
Programación C/C++
Torino10 7 4,030 Último mensaje 25 Abril 2012, 18:44 pm
por Torino10
HELP!!! Ejercicio con pilas dinámicas
Programación C/C++
Amazing94 1 1,963 Último mensaje 2 Junio 2012, 02:44 am
por x64core
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines