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
'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