分為3個類:input,operate,和output
`class input
{
private:
int userans[20];//使用者輸入的答案
int quesnum;//題目數量
public:
void setuserans(int a);
void setquesnum(int a);
int getquesnum();
char* getuserans();
`class output
private:
bool judge;//判斷使用者答案是否錯誤
char expression[20];//表示式
int userans;//使用者答案
int correctans;//正確答案
public:
void printsummary();//列印解題報告
void printjudge();//判斷答案對錯,從而決定如何反饋資訊
void setjudge(bool a);//傳入判斷值
void setuserans(int a);
void setcorrectnum(int a);
`class operation
{
private:
bool judge;
char experssion[20];
int correctans;
int userans;
public:
char random();//生成隨機數
void setexpression();//生成表示式
bool judgment();//判斷結果是否是整數
void bolan();//轉成逆波蘭表示式
int calculate();//計算
void eornot(char *a);//判斷使用者輸入是否有e
演算法實現
採用兩個棧先將表示式轉化為逆波蘭式,再計算。
實現過程:
設兩個棧s1,s2 ;
中綴式的左端開始逐個讀取字元,逐序進行如下步驟:
若當前棧s1的棧頂元素為'(',則直接壓入棧s1;
若當前棧s1的棧頂元素不為'(',則與棧s1的棧頂元素比較,若優先順序大於棧s1棧頂運算子優先順序,則直接壓入棧s1。否者,將棧s1的棧頂運算子彈出,壓入棧s2中,直到棧s1的棧頂運算子優先級別低於(不包括等於)該字元優先順序,或棧s2的棧頂運算子為'(',此時再則壓入棧s1;
3.在進行完2後,檢查棧s1是否為空,若不為空,則將棧中元素依次彈出並壓入棧s2中(不包括'#');
4.完成上述步驟後,棧s2便為逆波蘭式輸出結果。但是棧s2應做一下逆序處理,因為此時表示式的首字元位於棧底;
課程作業四
本次作業鏈結 採取物件導向的方法,四則運算自動出題軟體,根據需求可以劃分為幾個類?每個類具有什麼屬性?每個類具有什麼行為?類與類之間是如何進行協作的?誰給誰傳送訊息?誰持有誰的引用?該自動出題軟體採取何種演算法或者是如何實現的?可以採用流程圖描述的方法。本次分類,我一共分離出4種類,分別是equat...
課程作業四
ooa object oriented analysis,物件導向分析 從客觀存在的事務和事務之間的關係,歸納出有關物件 包括物件的屬性和行為 以及物件之間的聯絡,並將具有相同屬性和行為的物件用乙個類 class 來表示。建立乙個能夠反映真實情況的需求模型。ood object oriented d...
《物件導向程式設計》課程作業四
ooa object oriented analysis,物件導向分析 從客觀存在的事務和事務之間的關係,歸納出有關物件 包括物件的屬性和行為 以及物件之間的聯絡,並將具有相同屬性和行為的物件用乙個類 class 來表示。建立乙個能夠反映真實情況的需求模型。ood object oriented d...