关于表达式求值 注释部分不知道哪错啦
#include <stdio.h>#include <stdlib.h>
#define MaxSize 100
void trans(char str[], char postexp[]);
float compvalue(char postexp[]);
int main(void)
{
char exp[] = "(22+6)/4+2";
char postexp[MaxSize];
trans(exp, postexp);
printf("%s", postexp);
return 0;
}
void trans(char str[ ], char postexp[ ])
{
struct Stack
{
char data[MaxSize];
int top;
}op;
char ch;
int i = 0, t = 0;
op.top = -1;
ch = str[i];
i++;
while (ch != '\0')
{
switch (ch)
{
case '(':
++op.top;
op.data[op.top] = ch;
break;
case ')':
while (op.data[op.top] != '(')
{
postexp[t] = op.data[op.top];
++t;
--op.top;
}
--op.top;
break;
case '+':
case '-':
while (op.data[op.top] != '(' && op.top != -1)
{
postexp[t] = op.data[op.top];
++t;
--op.top;
}
++op.top;
op.data[op.top] = ch;
break;
case '*':
case '/':
// while (op.data[op.top] == '*' || op.data[op.top] == '/')
// {
// postexp[t] = op.data[op.top];
// ++t;
// --op.top;
// }
op.top++;
op.data[op.top] = ch;
break;
case ' ':
break;
default:
while(ch>='0' && ch<='9')
{
postexp[t] = ch;
++t;
ch = str[i];
++i;
}
--i;
postexp[t] = '#';
++t;
}
ch = str[i];
++i;
}
while (op.top != -1)
{
postexp[t] = op.data[op.top];
++t;
--op.top;
}
postexp[t] = '\0';
}