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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Pilas y colas
« en: 19 Junio 2015, 01:06 am »

Hola, hice este programa donde se tiene que usar colas y pilas para poder balancear una ecuacion, es decir, si pongo mas parentesis de lo debido me debe aparecer que le faltan parentesis
si no pues solo poner que esta correcto.
pero me marca error, y la verdad no se porque
si alguien me pudiera ayudar y/o asesorar porfavor, gracias

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <string.h>
  6. using namespace std;
  7.  
  8. class nodo{
  9.    private:
  10.        nodo *siguiente;
  11.        char parentesis;
  12.    public:
  13.        nodo(char p, nodo *s=NULL){parentesis=p; siguiente=s;}
  14.        nodo* regresaSiguiente(void); //{return siguiente;}
  15.        char regresaParentesis(void);
  16.        void modificaParentesis(char);
  17.        void modificaSiguiente(nodo*);
  18.  
  19. };
  20.  
  21.  
  22. nodo* nodo::regresaSiguiente(void)
  23. {
  24.    return siguiente;
  25. }
  26.  
  27. char nodo::regresaParentesis(void)
  28. {
  29.    return parentesis;
  30. }
  31.  
  32. void nodo::modificaParentesis(char p)
  33. {
  34.    parentesis=p;
  35. }
  36.  
  37. void nodo::modificaSiguiente(nodo* s){
  38.    siguiente=s;
  39. }
  40. ////////////////////////////////////FIN DE LA CLASE NODO///////////////////////////////////////
  41.  
  42. class Pila
  43. {
  44. private:
  45.    nodo*tope;
  46. public:
  47.    Pila(){tope=NULL;}
  48.    void Push(char);
  49.    char Pop(void);
  50.    char Tope(void)
  51.    {return tope-> regresaParentesis();}
  52.    char PilaVacia()
  53.    {return tope == NULL;}
  54.  
  55. };
  56.  
  57. void Pila::Push(char p)
  58. {
  59.    tope=new nodo(p, tope);
  60. }
  61.  
  62. char Pila::Pop(void)
  63. {
  64.    char p;
  65.    nodo*aux;
  66.    delete(aux);
  67.    return p;
  68.    if(!PilaVacia());
  69. }
  70.  
  71.  
  72. class Cola
  73. {
  74. private:
  75.    nodo*cabeza;
  76.    nodo*extremo;
  77.  
  78. public:
  79.    Cola(){cabeza=extremo=NULL;}
  80.    void Suma(char);
  81.    char Elimina(void);
  82.    int colaVacia(void){return cabeza==NULL;}
  83.    //~ Cola();
  84.  
  85. };
  86.  
  87. void Cola::Suma(char p)
  88. {
  89.    if(!extremo)
  90.    {
  91.  
  92.        extremo=cabeza=new nodo(p,NULL);
  93.        //extremo=cabeza;
  94.    }
  95.    else{
  96.        nodo*aux;
  97.        aux=new nodo(p);
  98.        extremo-> modificaSiguiente(aux);
  99.        extremo=extremo -> regresaSiguiente();
  100.  
  101.    }
  102.  
  103. }
  104.  
  105. char Cola::Elimina(void)
  106. {
  107.    char p=-1;
  108.    if(!colaVacia())
  109.    {
  110.    nodo*aux=cabeza;
  111.    cabeza=cabeza->regresaSiguiente();
  112.    p=aux->regresaParentesis();
  113.    delete(aux);
  114.    }
  115.  
  116.    return p;
  117. }
  118.  
  119.  
  120.  
  121. int main()
  122. {
  123.    char caracter[10];
  124.    int i;
  125.    char c;
  126.    Cola obj;
  127.    Pila p;
  128.  
  129.    cout<<"escribe la funcion: "<< endl;
  130.    cin.getline(caracter,10);
  131.  
  132.  while( caracter[i] != '\0')
  133.    {
  134.        obj.Suma(caracter[i]);
  135.    }
  136.  
  137.    while(!obj.colaVacia())
  138.    {
  139.        c=obj.Elimina();
  140.        if(c=='(')
  141.           {
  142.            p.Push(c);
  143.           }
  144.        else if(c==')')
  145.            {
  146.            p.Pop(c);
  147.            }
  148.    }
  149.    if(!p.PilaVacia())
  150.    {
  151.  
  152.        cout<<"Falta un parentesis "<<endl;
  153.    }
  154. if(p.PilaVacia())
  155. {
  156. cout<<"Todo esta bien"<<endl;
  157. }
  158.  
  159.    return 0;
  160.  
  161.  
  162. }


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pilas y colas
« Respuesta #1 en: 19 Junio 2015, 01:19 am »

¿Dónde te marca error, y qué error te marca?


En línea

DEaniz

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Pilas y colas
« Respuesta #2 en: 19 Junio 2015, 01:32 am »

me marca error en el pop, y me hace cíclica la función.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pilas y colas
« Respuesta #3 en: 19 Junio 2015, 01:52 am »

Copia el error y ponlo aquí.

En cualquier caso,
Código
  1. if(!PilaVacia());
sobra.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Pilas y colas
« Respuesta #4 en: 19 Junio 2015, 02:01 am »

Código
  1. char Pila::Pop(void){}

Fijate que no tiene parámetros y tú le estas pasando un char, que me imagino que es el carácter que quieres eliminar
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
DEaniz

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Pilas y colas
« Respuesta #5 en: 19 Junio 2015, 02:15 am »

Código
  1. 1Practica-5-estructuras-parentesis.cpp||In function 'int main()':|
  2. 1Practica-5-estructuras-parentesis.cpp|166|error: no matching function for call to 'Pila::Pop()'|
  3. 1Practica-5-estructuras-parentesis.cpp|166|note: candidate is:|
  4. 1Practica-5-estructuras-parentesis.cpp|62|note: int Pila::Pop(char)|
  5. 1Practica-5-estructuras-parentesis.cpp|62|note:   candidate expects 1 argument, 0 provided|
  6. ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
  7.  

Estos son los errores que marca
En línea

DEaniz

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Pilas y colas
« Respuesta #6 en: 19 Junio 2015, 02:17 am »

Código
  1. char Pila::Pop(void){}

Fijate que no tiene parámetros y tú le estas pasando un char, que me imagino que es el carácter que quieres eliminar


Si. pero como podría corregir ese error, esque no te entiendo bien, gracias!
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pilas y colas
« Respuesta #7 en: 19 Junio 2015, 13:16 pm »

En la línea 146, pusiste:
Código
  1. p.Pop(c);

A un método pop() no se le pasa ningún argumento. Pop elimina el último dato introducido en la pila, sea cual sea.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Pilas y Colas
Programación Visual Basic
[Decoded] 5 8,600 Último mensaje 30 Agosto 2010, 15:06 pm
por goldarg
Ayuda con Pilas y Colas
Programación C/C++
HeavyPsychedelic 1 3,589 Último mensaje 26 Octubre 2010, 18:57 pm
por Littlehorse
Pilas y Colas Pascal
Programación General
vanchopper 3 7,074 Último mensaje 31 Marzo 2011, 13:27 pm
por Khronos14
Pilas y Colas
Java
Shell Root 2 6,395 Último mensaje 13 Mayo 2011, 22:35 pm
por ShotgunLogic
Colas, pilas y arbole
Programación Visual Basic
Crarmon 0 1,870 Último mensaje 14 Julio 2011, 19:12 pm
por Crarmon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines