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()函数了解不深)但这样却能将字符串中未知长度的数字提取出来。