中序轉後序程式碼C++

裡面兩個function 是課本的 教授說 = = 叫我們定義裡面的變數 然後輸入 A+B+C+D 會print後敘式出來 可是我自己試過很多次 都不知哪裡出問題 precedence 這要定義嗎?? 程式碼: #include<stdio.h> #include<stdlib.h> int eval(void) { precedence token; char symbol; int op1,op2; int n=0; int... show more 裡面兩個function 是課本的
教授說 = = 叫我們定義裡面的變數 然後輸入 A+B+C+D 會print後敘式出來
可是我自己試過很多次 都不知哪裡出問題
precedence 這要定義嗎??
程式碼:

#include<stdio.h>
#include<stdlib.h>
int eval(void)
{
precedence token;
char symbol;
int op1,op2;
int n=0;
int top=-1;
token=gettoken(&symbol,&n);
while(token!=eos){
if(token==operand)
push(symbol-'0');
else
op2=pop();
OP1=pop();
switch(token){
case plus:push(op1+op2);
break;
case minus:push(op1-op2);
break;
case times:push(op1*op2);
break;
case divide:push(op1/op2);
break;
case mod:push(op1%op2);
break;
}
}
token=gettoken(&symbol,&n);
}
return pop();
}
precedence gettoken(char *symbol,int *n)
*symbol=exper[(*n)++];
switch(*symbol){
case '(':return lparen;
case ')':return rparen;
case '+':return plus;
case '-':return minus;
case '/':return divide;
case '*':return times;
case '%':return mod;
case ' ':return eos;
default :return operand;
}
}
int main(void)
{




system("pause");
return 0;
}


/* 主程式可以寫給我看看嗎@@ ? 謝謝大大
Update: &quot 是 "
&#039 是 ’
& 是 &
Update 2: ???大大:原來課本還有多一個函式
void postfix(void)
char symbol;
int n=0;
int top=0;
stack[0]=eos;
for(token=gettoken(&symbol,&n);token!=e...
token=gettoken(&symbol,&n)){
if (token==operand)
printf("%c",symbol);
Update 3: else if(token==rparen){
while(stack[top]!=lparen)
printToken(pop());
pop();
}
else{
while(isp[stack[top]]>=icp[token])
printToken(pop());
push(token);
}
}
Update 4: while((token=pop())!=eos)
printToken(token);
printf("\n");
}
Update 5: //*token 要怎定義呢@@?
printToken 又是!??
Update 6: 拜託你了><""
謝謝!!若是不夠回答我在開一個
1 answer 1