資源簡介
武漢大學國際軟件學院編譯原理作業
C++實現計算器+ —* \ 帶括號運算
[作業內容和要求]
設計和實現一個計算器,實現整數、實數的加減乘除四則運算,要求:
1、輸入字符串(直接從控制臺輸入、或采用文件輸入),可識別的合法單詞(token)
為:整數(不以0 開頭)、實數(不以0 開頭)、‘+’、‘-’、‘*’、‘/’,‘(’、‘)’,‘=’。
以‘=’作為輸入結束符。
2、輸出要求:檢查中綴表達式表示的加減乘除運算是否符合正常的表達式規則,
如果中綴表達式合法,則輸出計算結果;如果不合法,則輸出出錯提示。

代碼片段和文件信息
#include?
using?std::endl;?
using?std::cout;?
using?std::cin;?
class?Numbers???//定義存放數字的類
{
?private:?
?????????long?double?Num_str[200];
?????protected:?
?????????Numbers():count(0){}?
?????????~Numbers(){};?
?????????int?count;
?????????int?Num_set(long?double?num)
?????????{?
?????????????Num_str[count]=num;?
?????????????count++;?
?????????????return?0;?
?????????}?
?????????int?Num_input(long?double?numint?b)?
?????????{?
?????????????Num_str[b]=num;?
?????????????return?0;?
?????????}?
?????????long?double?getNum(int?b)
?????????{?
?????????????return?Num_str[b];?
?????????}?
?????????bool?display();
};?
class?sign????//定義一個符號的類
{?
?????protected:?
?????????int?a; //‘0‘標志?
?????????int?b; //‘1-9‘標志?
?????????int?c; //‘+-‘標志?
?????????int?d; //‘*‘標志?
?????????int?e; //‘/‘標志?
?????????int?f; //‘(‘標志?
?????????int?g; //‘)‘標志?
?????????int?h; //‘.‘標志?
?????????int?i; //‘=‘標志?
?????????int?fc; //‘(‘計數器?
?????????int?gc; //‘)‘計數器?
????????
?????????sign():a(0)b(0)c(0)d(0)e(0)f(0)g(0)h(0)i(0)fc(0)gc(0){}?
?????????~sign(){};?
};?
class?compute:protected?Numbersprotected?sign???//定義一個計算類
{?
?????private:?
?????????char?member;
?????????compute?*next;?
?????protected:?
?????????bool?creat(compute?**head_adrint?debug_model=0); ?????//構建算式鏈表
?????????bool?isValid(compute?*headint?debug_model=0); ?????//判斷有效性
?????????bool?deal(compute?*headcompute?**deal_head_adrint?debug_model=0);?????//數值有效化處理
?????????bool?comput(compute?**comput_head_adrint?debug_model=0);??????????????//算式計算
?????????long?double?ltodf(compute?*ch_head); //字符串轉雙精度浮點型
?????public:?
?????????compute():next(NULL){}???//構造函數?
?????????bool?main_Fun();?????????//總函數
?????????~compute(){};?
};?
??
//構建算式鏈表
bool?compute::creat(compute?**head_adrint?debug_model)?
{?
?????char?get[1000];?
?????char?*point;?
?????int?i;?
?????compute?*p*cur;?
?????cout<<“請輸入四則運算式“;?
?????if(debug_model==1)?
?????????cout<<“(debug模式)“< ?????else?
?????????cout< ?????cin>>get;?
?????for(point=getp=NULL*head_adr=cur=NULL;*point!=‘\n‘;point++)??//依次讀取字符串中的字符?
?????{?
?????????switch(*point)?
?????????{?
?????????????case?‘.‘:?
?????????????case?‘0‘:?
?????????????case?‘1‘:?
?????????????case?‘2‘:?
?????????????case?‘3‘:?
?????????????case?‘4‘:?
?????????????case?‘5‘:?
?????????????case?‘6‘:?
?????????????case?‘7‘:?
?????????????case?‘8‘:?
?????????????case?‘9‘:?
?????????????case?‘+‘:?
?????????????case?‘-‘:?
?????????????case?‘*‘:?
?????????????case?‘/‘:?
?????????????case?‘(‘:?
?????????????case?‘)‘:p=new?compute;?
??????????????????p->member=*point;?
??????????????????if(*head_adr==NULL)?
??????????????????????*head_adr=p;?
??????????????????else?
??????????????????????cur->next=p;?
??????????????????cur=p;?
??????????????????break;?
?????????????case?‘=‘:p=new?compute;?
??????????????????p->member=*point;?
??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????15261??2013-03-25?22:57??新建文件夾\Calculator\Calculator\Calculator.cpp
?????文件???????4025??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Calculator.vcxproj
?????文件????????948??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Calculator.vcxproj.filters
?????文件?????202452??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\Calculator.obj
?????文件???????1550??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\cl.command.1.tlog
?????文件??????22324??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\CL.read.1.tlog
?????文件???????1162??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\CL.write.1.tlog
?????文件?????????94??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\ConsoleApplication2.lastbuildstate
?????文件???????2002??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\ConsoleApplication2.log
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件??????????2??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件???????1466??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件???????3060??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件????????762??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\li
?????文件?????338944??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\vc110.idb
?????文件?????348160??2013-03-25?23:08??新建文件夾\Calculator\Calculator\Debug\vc110.pdb
............此處省略14個文件信息
- 上一篇:C++課程設計計算器
- 下一篇:自定義消息
評論
共有 條評論