熟悉VS和Git
GitHub地址 | https://github.com/Plough-Z/C-study |
---|---|
Git用户名 | Plough-Z |
学号后五位 | 82223 |
博客地址 | [https://www.cnblogs.com/plough-z/] |
作业链接 | https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/homework/7590 |
项目背景:
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。作为程序员的阿超心想,做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。
他把老师的话翻译一下,就形成了这个软件的需求:程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。
练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。
项目的完成过程
1.配置环境
安装能进行编码,单元测试,效能分析等功能的工具VS2017
安装成功后,首次使用 VS 2017 还需要对其进行简单的配置,包括开发环境的主题风格。这里开发设置选择 C++即可,主题推荐深色主题。
百度网盘:链接: https://pan.baidu.com/s/1jJXyRMA 密码: ub6c
配置环境问题:
由于 VS 本身体积较大,推荐修改存储位置,将其安装在非系统盘目录。
2.克隆项目
从班级要求仓库地址Fork到自己GitHub的仓库中
安装将仓库内容拷贝到本地的工具Git
Git-windows版本下载地址:点击此处
下载安装完成后,新建一个文件夹来保存仓库中的文件,打开文件夹,在文件夹空白区域点击右键,选择Git Bash Here,输入git clone + 仓库的地址,可以直接复制下来,只能通过右键然后paste进行粘贴,输入完成后按回车就可以了
在完成上述操作后,可在当前目录下看到一个与仓库同名的文件夹Calculator ,这就是克隆到本地的项目。
注意,默认克隆的分支是 java,请使用 git checkout cplusplus 命令切换到 C++ 项目。 进入项目文件夹,新建一个文件夹,重命名为你的 Github 账号名。
克隆项目的问题:
git checkout 杀我!
3.代码设计
由于自己知识短浅问题,选择C++与数据结构栈和队列解决此项目。
class Solution {
public:
int calculate(string s) {
vector<int> num; //用来存数
vector<char> fu; //存运算符号
string tmp;
for(int i=0; i<s.size(); i++){
if(s[i] != ' '){
if(isdigit(s[i]))
tmp+=s[i];
else{
num.push_back(stoi(tmp)); //写入数值
tmp = "";
fu.push_back(s[i]); //写入运算符
}
}
}
num.push_back(stoi(tmp));
if (fu.empty()) return num[0];
for(int i=0; i<num.size()-1;){ //先处理乘除法
if(fu[i]=='*' || fu[i]=='/'){
char ch = fu[i]; //取运算符
int L = num[i], R = num[i+1]; //取被除/乘数和除/乘数
int LR = (ch=='*')? L*R: L/R;
num.erase(num.begin() + i+1);
num[i] = LR; //删掉一个数 将结果写入
fu.erase(fu.begin() + i);
}
else
i++;
}
int ans = num[0];
for(int i=1; i<num.size();i++){ //加减法从左到右依次处理
if (fu[i-1] == '+')
ans += num[i];
else
ans -= num[i];
}
return ans;
}
};