課程作業四

2022-07-28 14:45:39 字數 1525 閱讀 4822

分為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...