隨機生成四則表示式2

2022-04-09 17:00:03 字數 3610 閱讀 2528

接著上次的程式,老師又給二柱子增加了幾個條件,對程式再做進一步的改進,要求滿足如下條件:

1.題目避免重複。

2.可制定。(數量/列印方式)

3.可以控制下列引數:

如下是對本題的分析:

針對問題,首先要進行拆分。從最小的功能開始,然後依次實現。首先還是生成一道兩個數的四則表示式,這個不難實現。困難的是如何生成多個數的表示式?其實,多個數的運算只是在兩個數的基礎上進行增加的,所以可以把上一次生成的表示式當作乙個數,再與隨機生成的另乙個數合成乙個表示式,如此迴圈,直到整個表示式的數字個數滿足我想要達到的數量為止。那麼問題又來了,數字是整型,符號為字元型,究竟如何合在一塊進行輸出呢?經過分析發現,字串有的合成可以直接把幾個字串相加,於是可以把每一次生成的表示式轉換成字串的形式來存放,這個過程中要使用到itoa()函式。這樣的話如果要加入「()」也會變得非常簡單,如:equation=『(』+equation+『)』+new_num。

而如此一來,對於後面的查重工作,只需把每次新生成的表示式存放在字串陣列中,依次比較之前生成的表示式中是否有相同項,若有,則此次生成無效,再重新生成乙個新的表示式,若沒有重複項,則進行下一道表示式的生成工作。直到達到生成表示式的數量為止。

而對其他的要求則可以通過設定使用者選擇來實現,簡單略。

如下是本次問題實現的源**:

//

按要求隨機生成四則運算 王世強 2015/3/10

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define random() (rand()%100000)

//符號生成

char create_symbol(int

n)

else

if(n=1

)

j=random()%n1;

if(j==0) symbol[0]='+'

;

else

if(j==1) symbol[0]='-'

;

else

if(j==2) symbol[0]='*'

;

else symbol[0]='/'

;

return symbol[0

];

} //把數字轉換成字串型

string int_string(int

number)

//表示式轉換成乙個字串

string combination(string str1,string str2,char

k) //

主函式

intmain()

else

for(int i=0;i)

} symbol=create_symbol(n);

num2=random()%range+1

; str_num2=int_string(num2);

change=random()%2

;

if(change==0

)

equation[i]=combination(str_num1,str_num2,symbol);}}

//判斷是否重複

for(j=0;j)

}if(repeat!=1)//

若不重複,則輸出

else}}

if(shuchu==1

)

}

如下是不同條件下執行結果的截圖:

接下來是檔案輸出

檢視檔案內容:

總結:這次的練習,讓我體會到了通過思考解決程式問題的樂趣,回想以前的時候,就是因為怕動手動腦,怕麻煩,總是逃避程式設計,當醒悟過來時,已經大三了,但是在接下來的時間裡,要改掉以前的毛病,珍惜每次練習的機會來提公升自己的能力!

專案計畫總結:

日期&&任務

聽課編寫程式

閱讀相關書籍

網上查詢資料

日總計周一24

2210周二31

4週三周四2

24周五5

117週六

22週日2

2周總計414

7429時間記錄日誌:

日期開始時間

結束時間

中斷時間

淨時間活動

備註3/7

14:00

15:50

10100

聽課軟體工程上課

16:00

18:20

140編寫程式

編寫老師布置的作業

19:00

21:00

10110

閱讀書籍

《構建之法》

21:00

24:00

20160

網上查詢資料,程式設計

作業2,討論問題

3/816:00

18:00

10110

查資料,編寫程式

作業221:00

21:50

50閱讀書籍

《構建之法》

3/93/10

14:00

15:50

10100

聽課軟體工程上課

19:00

21:20

20100

查資料,編寫程式

休息,聊天,作業2

3/11

8:00

10:05

5120

寫部落格發表本週部落格

16:10

18:30

10140

修改程式,寫部落格

測試程式,發表部落格

19:00

19:40

40閱讀書籍

《構建之法》

19:45

21:45

10110

寫部落格,修改程式

休息,聊天,發表部落格

3/12

9:00

9:30

30閱讀書籍

計畫閱讀《構建之法》

3/13

19:00

19:30

30閱讀書籍

計畫閱讀《夢斷**》

缺陷記錄日誌:

在完成的過程中,改用了新的方法,大部分**都有改寫,出現過個別語法錯誤,都是由於馬虎造成的,具體的過程就沒有統計,下週學習過程中會慢慢養成記錄的習慣!

生成四則表示式

能夠自動生成四則運算練習題 可以定製題目數量 使用者可以選擇運算子 使用者設定最大數 如十以內 百以內等 使用者選擇是否有括號 是否有小數 使用者選擇輸出方式 如輸出到檔案 印表機等 最好能提供圖形使用者介面 根據自己能力選做,以完成上述功能為主 經過我和我的夥伴商量我們決定如下 駕駛員 劉亞 本人...

關於生成四則表示式

關於出題數量和列印方式的限制解決。使用兩個引數num line,num限制出題數量,line限制輸出時每行輸出數量。將for迴圈設為無限迴圈,在迴圈的最後讓四組數量相加等於num即可break跳出迴圈。最後乙個限制有很多要求,目前完成了除分數的前幾個要求。解決方法就是在for迴圈剛開始時,兩個引數和...

四則表示式

四則表示式求值,過了北大百練,放心用哈 北大百練url include include include include includeusing namespace std const int maxn 1000000 char str maxn 可以定義乙個字元變數,儲存c前的乙個字元,這樣就可以...