Ayuda a resolver este error de compilacion por favor!

Iniciado por carles24, 19 Noviembre 2011, 23:39 PM

0 Miembros y 1 Visitante están viendo este tema.

carles24

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



do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

satu

Hola

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

Saludos
Breakbeat como forma de vida