設計乙個四則運算隨機生成器,要求:
實現基本運算功能:
程式結構如下:
1.接收命令列輸入正整數n,用正規表示式判斷其合法性
2.迴圈n次,每次生成乙個式子,當隨機生成的式子不符合條件時(有兩點,1所有運算子都一樣,2除號後面是零)跳出此次迴圈,迴圈計數減一,重新生成式子。
3.生成的符合條件的式子進行計算,運算結果寫入到result.txt檔案中。
該部分重點建立程式整體結構,其核心部分為運算部分,在下一節中說明。
運算過程從左向右一次讀取隨機生成的運算數和表示式,舉例"2+3* 5-1="中有四個運算數[2,3,5,1]和四個運算子[+,*,-,=],其中乘除的優先順序高,加減和等於的優先順序低,則根據運算數前後的運算子決定其幾種不同情況:
1.加(減)在結果中;
2.乘(除)在暫存數中;
3.乘(除)結束,暫存數加(減)在結果中。根據判斷運算數前後的運算子進行不同運算。
//運算
//sum為最終結果,pro為乘積暫存,lastop表示上乙個運算子
double sum = 0.00, pro=1;
int lastop = 0;
for (int j = 0; j < x; j++)
}//加減等於的情況
else else
}lastop = ysf;
system.out.print(sz+op[ysf]);
}
變數ysf為當前運算數後面的運算子對應的陣列["+","-","*",「÷」,"="]下標,分兩種情況進行討論:
1.運算子為乘除,該數乘(除)在暫存數pro上
2.運算子為加減等於,當前面是加(減)時,該數加(減)在結果sum上;前面是乘(除)時,該數乘(除)在暫存數pro上,同時乘(除)結束,暫存數pro加(減)在結果中。
注:實現僅為加減乘除,未考慮實現擴充套件功能:帶括號的算式,若考慮帶括號的算式,該演算法的邏輯變得太複雜,需選用堆疊進行計算。
進行合法和非法輸入測試,此處僅展示部分測試
列印到螢幕上與寫入的檔案進行對比
在此執行的結果會追加在該檔案的內容後面
接收命令列輸入
string input = sc.nextline();
//合法性控制
while(!ispositiveinteger(input))
integer n = integer.parseint(input);
隨機生成乙個3-5的數
//運算數字個數(3-5)
integer x = (int)(math.random() * 100) % 3 + 3;
生成式子
//生成式子
shuzi.add((int)(math.random() * 100));
for (int j = 0; j < x-1; j++)
}
寫入檔案
//寫入檔案
filewriter filewritter = new filewriter(file.getname(),true);
bufferedwriter bufferwritter = new bufferedwriter(filewritter);
bufferwritter.write(data.tostring()); //寫入檔案(stringbuffer轉string)
bufferwritter.newline();
bufferwritter.close();
通過這個程式的設計及編寫,在程式設計階段,可以把功能切分,把涉及到相同變數的部分小功能模組化開發。
雖然在設計階段把很多問題在大腦中形成了實際的解決方向,但開發過程中,查閱資料依然用去了很多時間,尤其是之前《構建之法》中提到的"解決小問題",消耗了大量時間,對程式語言的熟練度太低,需要更多地實踐提公升編碼能力。
關於變數命名問題依然沒有形成較好的習慣,由於英語水平限制,很多變數命名時都需要翻譯工具輔助,由此很多變數偷懶用了漢語拼音甚至縮寫。
任務內容
計畫共完成需要的時間(min)
實際完成需要的時間(min)
計畫1520
估計所需時間並規劃大概步驟
1520
開發430520
需求分析
3035
生成設計文件
2030
設計複審
1020
**規範
1015
具體設計
6090
具體編碼
180240
**複審
6090
測試60
90報告65100
測試報告
3040
計算工作量
1520
事後總結
2040
小學四則運算程式設計
內容 1 引入隨機函式,隨機生成四種運算型別和需要運算的數值 import random def szys sym a random.randint 0,3 n1 random.randint 1,20 n2 random.randint 1,20 result 0 if a 0 result n1...
小學生四則運算
小學生練習題四則運算包括真分數的四則運算和整數的四則運算,我寫了八個函式,分別是整數加法 整數減法 整數乘法 整數除法 真分數加法,真分數減法,真分數乘法和真分數除法,利用隨機函式rand 產生隨機數,可以隨意練習多少道題目,寫完這個程式用了2個小時,主要用在除錯上了。include include...
小學四則運算程式設計實踐
1 import random 匯入隨機庫 2from fractions import fraction 匯入分數運算3 整數運算 4def c1 q,ans 5 operator random.choice 生成運算子 6if operator 7 n1 random.randint 0,10 ...