1 #include 2 #include 3 #include45 #include 67
#define stack_size 10089
10struct
snode;
1415
struct
stack;
2021
/*棧操作函式
*/22
int initstack(stack &s); /*
建立棧*/
23int destroystack(stack &s); /*
銷毀棧*/
24int clearstack(stack &s); /*
清空棧*/
25int gettop(stack s, snode &e); /*
取出棧頂結點並返回節點值
*/26
int push(stack &s,snode e); /*
將結點e壓入棧
*/27
int pop(stack &s,snode &e); /*
刪除棧頂結點並返回其節點值
*/28
29/*
表示式計算器相關函式
*/30
char get_precede(char s,char c); /*
判斷運算子s和c的優先順序
*/31
int isopr(char c); /*
判斷輸入的字元是不是運算子,是則返回0,否返回1
*/32
float operate(float x, char opr, float y); /*
計算x和y經過運算子opr計算後的結果
*/33
float compute(); /*
表示式結算器主函式
*/34
char *killzero(float result); /*
去掉結果後面的0
*/35
36int initstack(stack &s)
3744 s.top=s.base
;45 s.size=stack_size;
46return0;
47}4849
int destroystack(stack &s)
5054
55int clearstack(stack &s)
5660
61int gettop(stack s,snode &e)
6268 e=*(s.top-1
);69
return0;
70}7172
int push(stack &s,snode e)
7382 s.top=s.base+s.size;84}
85 *s.top=e;
86 s.top++;
87return0;
88}8990
int pop(stack &s,snode &e)
9197 e=*(s.top-1
);98 s.top--;
99return0;
100}
101102
char get_precede(char s,char
c)103
166return0;
167}
168169
int isopr(char
c)170
176177
float operate(float x, char opr, float
y)178
197else
198202
default
:203 printf("
bad input.\n");
204return0;
205}
206return
result;
207}
208209
float compute() /*
計算的時候運算子棧頂結點的優先順序始終最低
*/210
235else
/*是運算子
*/236
246 opr_in.ch=c;
247switch(get_precede(opr_top.ch,c)) /*
根據運算子優先順序做相應操作
*/248
268 printf("
opnd出棧:[%f]\n
",b.data);
269if(pop(opnd,a)<0
)270
275 printf("
opnd出棧:[%f]\n
",a.data);
276 opn_tmp.data=operate(a.data,opr_t.ch,b.data); /*
計算*/
277 push(opnd,opn_tmp); /*
將計算結果壓入運算元暫存器
*/278 printf("
結果入棧:[%f]\n
",opn_tmp.data);
279break
;280
}281
}282 gettop(optr,opr_top); /*
取出運算子暫存器棧頂結點
*/283
}284
gettop(opnd,opn_tmp);
285destroystack(optr);
286destroystack(opnd);
287return
opn_tmp.data;
288}
289290
char *killzero(char *res,float
result)
291301
if(res[i]=='.'
)302 res[i]='\0'
;303
return
res;
304}
305306
intmain()
307324
return0;
325 }
C 簡易計算器
介紹 僅支援自然數間的 操作,並沒有括號。實現 利用棧實現儲存運算數以及運算子。流程 輸入 string exp 對exp進行處理 數字入數棧,運算子入字元棧。對字元棧檢測,非空時進行 計算 輸出 結果。處理 數字則入數棧,字元就進行判斷,1 棧空,字元入棧 2 而棧非空 棧頂運算級別 當前字元運算...
研發基於GUI的簡易計算器
使用物件導向思想研發簡易計算器 匯入相關的類庫檔案 import wx class cal gui 類的初始化方法,建立所有的控制項 def init self self.window wx.frame none title 計算器 size 600 500 self.panel wx.panel ...
簡易計算器
include include include char xpr expression int level char ch double calc int lim return ret int main cal的遞迴使用,利用了當 運算子運算完畢以後,仍然會留在這個位置 比如式子 3 5 2 的分析...