help: evaluating prefix notation

Discussion in 'C' started by Mst8kenId, Aug 28, 2010.

1. Mst8kenIdNew Member

Joined:
Aug 28, 2010
Messages:
1
0
Trophy Points:
0
only a beginner, please bear with me..
there are no errors, but wrong output
assumptions:
input is correctly formed
array size is 20
single digits only
4 basic operations

#include
#include
#include
#include

int stk[20];

void push(int a, int b)
{
stk[a]=b;
}

int pop(int a)
{
int b=stk[a];
stk[a]=NULL;
return b;
}

main()
{
char yorn, str[20], *tmp;
int chr, sctr, a, x, y, ans;

do{
clrscr();
printf("input an equation in prefix notation: ");
scanf("%s", &str[20]);
sctr=0;
for(a=20; a>0; a--)
{
if(isdigit(str[a-1])!=0)
{
*tmp=str[a-1];
chr=atoi(tmp);
push(sctr, chr);
sctr++;
}
if(isdigit(str[a-1])==0)
{
if(str[a-1]=='+')
{
x=pop(sctr-1);
y=pop(sctr-2);
sctr-2;
ans=x+y;
push(sctr, ans);
}
if(str[a-1]=='-')
{
x=pop(sctr-1);
y=pop(sctr-2);
sctr-2;
ans=x-y;
push(sctr, ans);
}
if(str[a-1]=='/')
{
x=pop(sctr-1);
y=pop(sctr-2);
sctr-2;
ans=x/y;
push(sctr, ans);
}
if(str[a-1]=='*')
{
x=pop(sctr-1);
y=pop(sctr-2);
sctr-2;
ans=x*y;
push(sctr, ans);
}
}
}
ans=pop(sctr);
printf("\ntry again?[y/n]: ");
scanf("%s", &yorn);
getch();
}while((yorn=='y')||(yorn=='Y'));

getch();
return 0;
}