GIT地址 | Git地址 |
---|---|
GIT用戶名 | Misizu-star |
學號後五位 | 61126 |
博客地址 | 個人博客 |
做業連接 | 我的第2次做業:熟悉使用工具 |
下載:目前VS更新到VS2019,(本人幾乎使用過vs各類版本,推薦vs2017)下載VS2017去須要官網的找舊版本。下載地址
安裝:運行引導安裝程序
等待下載安裝,安裝後設置一些我的配置,運行如圖
html
下載:下載地址 根據本身電腦配置選擇對應版本
安裝:安裝過程建議選擇默認,若在桌面點鼠標右鍵出現此標誌則安裝成功
git
阿超家裏的孩子上小學一年級了,這個暑假老師給家長們佈置了一個做業:家長天天要給孩子出一些合理的,但要有些難度的四則運算題目,而且家長要對孩子的做業打分記錄。做爲程序員的阿超造成了這個軟件的需求:
這次做業代碼使用C++完成,建立一個名爲Calculator的類,類成員包含生成題目,計算題目兩個函數。
1.生成題目程序員
string Calculator::MakeQuestion() { string question = ""; int number1 = random(1, 100); int op_num = random(1, 3); //隨機產生操做符個數 question += to_string(number1); for (int i = 0; i < op_num; i++) { int op_index = random(0, 3); //操做符下標() int number2 = random(1, 100); if (op_index == 3) { while (number1 < number2 || number1 % number2 != 0) { number2 = random(1, 50); //不能整除則從新生成隨機數 } } number1 = number2; question += op[op_index] + to_string(number1); //Calculator成員中 string op[4] = { "+","-","*","/" }; } question += "="; return question; }
2.計算題目github
探索:在百度上了解中綴表達式和後綴表達式,解決方法爲:先將表達式轉化爲後綴表達式,經過使用棧操做計算後綴表達式(後綴表達式真是個好東西)。但中綴表達式轉後綴表達式比較麻煩 不會用代碼實現。經過與同窗討論找到一個簡單方法。緩存
思路:全部的四則運算都是先對兩個數據進行運算,再將運算結果通下一個數據進行運算,直到全部數據運算完爲止。難點就在於運算符的優先級。dom
int Calculator::Solve(string question) { stack<int> num_stack; //保存運算數據的棧 stack<char> op_stack; //保存操做符的棧 int i = 0; while (i < question.length()) { char temp = question[i]; if (temp != '+'&&temp != '-'&&temp != '*'&&temp != '/'&&temp != '=') { int number = stoi(question.substr(i)); //取出完整運算數據 num_stack.push(number); //運算數據直接入棧 i += to_string(number).length(); } else { if (op_stack.empty()) op_stack.push(temp); else if (Prec(temp) > Prec(op_stack.top())) op_stack.push(temp); //棧外操做符優先級大於棧頂 else { //棧外操做符優先級小於或等於棧頂 while (!op_stack.empty()) { char op = op_stack.top(); int num2 = num_stack.top(); num_stack.pop(); int num1 = num_stack.top(); num_stack.pop(); if (op == '+') num_stack.push(num1 + num2); else if (op == '-') num_stack.push(num1 - num2); else if (op == '*') num_stack.push(num1 * num2); else if (op == '/') num_stack.push(num1 / num2); op_stack.pop(); } op_stack.push(temp); } i++; } } return num_stack.top(); }
寫入文件
將數據寫入文件比較簡單,參考博客。效果以下:
函數
迴歸測試是指修改了舊代碼後,從新進行測試以確認修改沒有引入新的錯誤或致使其餘代碼產生錯誤。也就是說修改代碼後再次進行單元測試。
個人程序規模較小,單元測試也較爲簡單,在迴歸測試中也沒有遇到什麼問題。工具
參考這篇博客的Git提交代碼步驟及常見錯誤和解決方法。
經過實際操做總結出簡單幾步:(前三步)visual-studio
4.pull request
在本身的GitHub上點擊 「New pull request」
再點擊 發起請求,審覈經過則是如下效果:
單元測試
因爲提交後原倉庫已經改變,前三步操做沒能截到圖,emm......
string str="abc123cd"; int num=stoi(str.substr(4)); cout << num << endl;
獲得的結果是23,str.substr(4)獲得的子串爲"23cd",再用stoi()轉化後就只剩23了,(不懂,對stoi()函數了解不深)但這樣卻能將字符串中未知長度的數字提取出來。