Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: carles24 en 19 Noviembre 2011, 23:39 pm



Título: Ayuda a resolver este error de compilacion por favor!
Publicado por: carles24 en 19 Noviembre 2011, 23:39 pm
Hola, estoy haciendo un proyecto de pasar de notacion infija a postfija, estoy usando el dev c++ pero no he podido terminar el programa por que me esta dando estos errores en varias funciones:
'Pila' was not declared in this scope expected ',' or ';' before '{' token
'Pil' undeclared (first use this function)
'CrearPila' cannot be used as a function

Este es mi archivo .h:

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
using namespace std;

typedef char TipoDato;


int PilaLlena(Pila P)
{
    return(P.cima == TAM -1)?1:0;
}
int PilaVacia(Pila P)
{
    return (P.cima == -1)?1:0;
}
void Ingresar(Pila *P, TipoDato x)
{
     if(PilaLlena(*P))
     {
                      puts("Error, Pila llena");
                      return;
                      //exit(-1);
     }
     P->lista[++P->cima] = x;
}

TipoDato Quitar(Pila *P)
{
     if(PilaVacia(*P))
     {
                      puts("Error, pila vacia");
                      TipoDato xx;
                      return xx;
                      //exit(-1);
     }
     TipoDato aux = P->lista[P->cima];
     P->cima--;
     return aux;
}
TipoDato Cima(Pila P)
{
         if(PilaVacia(P))
         {
                         puts("Error");
                         TipoDato xx;
                         return xx;
                         //exit(-1);
         }
         return (P.lista[P.cima]);
}
void CrearPila(Pila *P)
{
     P->cima = -1;
}


ESTE ES MI ARCHIVO .CPP:

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include "proyecto2.h"
#define MAX 20

using namespace std;

int Proced(TipoDato cima,TipoDato simb);
int main ()
{
    TipoDato simb,Cad[MAX]={' '};
    Pila Pil;
    int a=0,i,flag=0;
    CrearPila(&Pil);
    puts("introduce una operacion en notacion interfija");
    while((simb=getchar())!='n'){
          if(simb!=('/') && simb!=('*') && simb!=('-') && simb!=('+') && simb!=('^') && simb!=('(') &&simb!=(')')){
             Cad[a]=simb;
             a=a+1;
             }
             else{
                if(simb=='('){
                  Cad[a]=simb;
                  a=a+1;
                  flag=1;}
                   else if(simb==')'){
                       while(!PilaVacia(Pil)){
                        Cad[a]=Quitar(&Pil);
                        a=a+1;
                        }
                        Cad[a]=simb;
                        a=a+1;
                        flag=0;
                        }
                     else if(!PilaVacia(Pil) && Proced(Cima(Pil),simb)){
                        while(!PilaVacia(Pil) && Proced(Cima(Pil),simb)){
                            Cad[a]=Quitar(&Pil);
                            a=a+1;                   
                     }}
                  if(simb!=')' && simb!='(')
                  Ingresar(&Pil,simb);
                  }
             }

    while(!PilaVacia(Pil)){
    Cad[a]=Quitar(&Pil);
    a=a+1;
}
puts(Cad);
system("pause");
}

int Proced(TipoDato cima,TipoDato simb)
{
if(cima=='^')
   {
    return 1; 
             }
    else if((cima=='*' || cima=='/') && (simb=='-' || simb=='+'))
           {
           return 1;
                       }
         else{
              return 0;}
}

Les agradezco cualquier contribucion, ya que no tengo idea donde estan los errores del codigo.
gracias




Título: Re: Ayuda a resolver este error de compilacion por favor!
Publicado por: do-while en 20 Noviembre 2011, 16:21 pm
¡Buenas!

Lo que te esta diciendo, y con razon, es que no has declarado el tipo de dato Pila en ningun lado, lo que es verdad si el codigo que has puesto es todo el codigo que tienes. Has declarado variables del tipo Pila sin estar este tipo definido, por lo que este es el segundo error que estas cometiendo. Y el tercer error, como el segundo, lo solucionaras una vez que declares el tipo Pila.

¡Saludos!


Título: Re: Ayuda a resolver este error de compilacion por favor!
Publicado por: satu en 20 Noviembre 2011, 16:22 pm
Hola

¿Que es "Pila", dónde lo has creado o declarado?

Saludos