聯成電腦技術論壇

 找回密碼
 註冊
搜索
查看: 1092|回復: 0

我想請問有關C++的簡易計算機

[複製鏈接]
發表於 2006-11-20 23:41:03 | 顯示全部樓層 |閱讀模式
11111111111111111111111111111111111111111111111111111111111
void postfix(void)
{
char symbol;
precedence token;
int n=0;
int top=0;
stack[0]=eos;
for (token=get_token(&symbol,&n); token ! =eos; token=get_token(&symbol,&n))
if (token==operand)
printf("%c",symbol);
else if (token==rparen){
while (stack[top] ! =lparen)
print_token(deletes(&top));
deletes(&top);
}
else{
while(isp[stack[top]]>=icp[token])
print_token(deletes(&top));
add(&top,token);
}
}
while((token=deletes(&top) ! =eos)
print_token(token);
printf("\n");
}

22222222222222222222222222222222222222222222222222222222222
int eval(void)
{
precedence token;
char symbol;
int op1,op2;
int n=0;
int top=-1;
token=get_token(&symbol,&n);
while(token !=eos){
if(token==operand)
add(&top,symbol-'0');
else{
op2=deletes(&top);
op1=deletes(&top);
swith(token){
case plus : add(&top,op1+op2);
break;
case minus : add(&top,op1-op2);
break;
case times : add(&top,op1*op2);
break;
case divide : add(&top,op1/op2);
break;
case mod : add(&top,op1%op2);
}
}
token=get_token(&symbol,&n);
}
return deletes(&top);
}

33333333333333333333333333333333333333333333333333333333333
precedence get_token(char *symbol, int *n)
{
*symbol=expr[(*n)++];
swith(*symbol){
case '(' : return lparen;
case ')' : return lparen;
case '+' : return plus;
case '-' : return minus;
case '/' : return divide;
case '*' : return times;
case '%' : return mod;
case ' ' : return eos;
default : return operand;
}
}
===========================================================
這三段是我們簡易計算機的程式

第一段式轉碼  
把a*b/c的算是改變=>ab*c/的方式堆疊進去第二段中
再由第二段算出結果 第三段 完成

可是 我兜不起來><

誰能幫幫我 急件  半夜趕作業ing
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

小黑屋|Archiver|手機版|聯成電腦技術論壇

GMT+8, 2024-11-15 09:30

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表