de antemano les agradezco en lo que me puedan ayudar, miren es que estoy haciendo un algoritmo que evalua en posfijo y ya lo tengo casi listo,me corre y todo, pero no me da los resultados que son,creo que es porque esta llenando de basura a la pila en donde se almacenan los operandos,si me pueden decir si tengo un error se los agradeceria, miren el codigo,ah es en turbo c++:
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<alloc.h>
#include"c:\unzipped\tc3\include\pila.h"
int operando(char);
int i=0,dat1,dat2,con,aux;
char posfijo[100],car;
int resul;
void main()
{
Pila p;
inicializa(&p);
textcolor(LIGHTCYAN);
clrscr();
gotoxy(21,7);
fflush(stdin);
cout<<"INGRESE LA EXPRESION: ";
gets(posfijo);
while(posfijo!=NULL){
if(operando(posfijo)==1){
push(&p,posfijo);
}
else
if(tope!=NULL){
dat2=tope(p);pop(&p);
dat1=tope(p);pop(&p); printf("%d",dat1); getch();
}
if(operando(posfijo)==0){
switch(posfijo){
case '*' : resul=(dat1*dat2);
break;
case '+' : resul=(dat1+dat2);
break;
case '/' : resul=(dat1/dat2);
break;
case '-' : resul=(dat1-dat2);
break;
case '^' : resul=(pow(dat1,dat2));
break;
default : gotoxy(21,9);
cout<<"OPERACION MAL FORMULADA:";
break;
}
push(&p,resul);
}
i++;
}
gotoxy(25,12);
printf("LA RESPUESTA ES: %d"),tope(p);
getch();
}
////////////////////////////////////////////////////////////////////////////////
int operando(char car){
switch(car){
case '*' : return (0);
case '+' : return (0);
case '/' : return (0);
case '-' : return (0);
case '^' : return (0);
default : return (1);
}
}
////////////////////////////////////////////////////////////////////////////////