熟悉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;
    }
};
posted @ 2019-09-19 21:00  Plough  阅读(245)  评论(2编辑  收藏  举报