接著上次的程式,老師又給二柱子增加了幾個條件,對程式再做進一步的改進,要求滿足如下條件:
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前的乙個字元,這樣就可以...