第二次作业——熟悉使用工具 Anthonyzk

GIT地址https://github.com/Anthony081105/YZK
GIT用户名Anthony081105
学号后5位81105
作业链接https://www.cnblogs.com/pythonzk/p/11564366.html

项目背景:

阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。作为程序员的阿超心想,做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。 他把老师的话翻译一下,就形成了这个软件的需求:程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。 练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。
### 项目的完成过程
### 1.配置环境
安装能进行编码,单元测试,效能分析等功能的工具VS2017 1786553-20190919131224551-512366066.png 安装成功后,首次使用 VS 2017 还需要对其进行简单的配置,包括开发环境的主题风格。这里开发设置选择 C++即可,主题推荐深色主题。 以上是我查阅VS2017安装相关资料得到的结果,给我提供了VS2017的安装途径。

配置环境问题:

由于 VS 本身体积较大,推荐修改存储位置,将其安装在非系统盘目录。 ###2.克隆项目 从班级要求仓库地址Fork到自己GitHub的仓库中 1786553-20190919131911925-1797453540.png
#### 安装将仓库内容拷贝到本地的工具Git
Git-windows版本下载地址:点击此处
1786553-20190919132128956-262696099.png
下载安装完成后,新建一个文件夹来保存仓库中的文件,打开文件夹,在文件夹空白区域点击右键,选择Git Bash Here,输入git clone + 仓库的地址,可以直接复制下来,只能通过右键然后paste进行粘贴,输入完成后按回车就可以了
201901786553-20190919132406282-1930465785.png
在完成上述操作后,可在当前目录下看到一个与仓库同名的文件夹Calculator ,这就是克隆到本地的项目。 注意,默认克隆的分支是 java,请使用 git checkout cplusplus 命令切换到 C++ 项目。 进入项目文件夹,新建一个文件夹,重命名为你的 Github 账号名。
1784274-20190919220605864-538021892.png

配置过程

据了解,VS下载的节点是在普林斯顿大学,我和室友还开玩笑说,考研出国去普林斯顿大学就可以了,在明理楼用哪里的校园网下载,速度十分的慢,下了一天才下载了15%,随后我回寝室用EDU下载,终于解决了下载速度的问题,1小时就下载好了,但是兼容性的问题也困扰了我良久,东问西问,终于配置好了VS2017,但紧随其后,即使解决掉了代码编写的问题,编译环境出的bug却一环又一环,随后我也不得不放弃用VS2017书写,改为使用DevC++来编译此程序,下面代码运行结果我会详细说明。

代码设计

我使用的语言是C++,其代码思路是通过多个数组传值,同时控制需要生成的题目是否有乘除运算。是否有余数,并确定所有相关值的取值范围,虽然看起来有些繁琐,但是使用者使用的时候会感受到该程序的可操作性较好。当然,所有值的产生都归功于rand函数,虽然是基础库里面的基本函数,但是在随机生成的时候,rand函数功能的强大就体现出来了。再者,在这个程序中,使用者可以直接回答随机生成的四则运算算术题,无论回答正误,都会返回其结果,更进一步提高了其可操作性!程序代码如下:
```#include
using namespace std;

void main()
{
int a0[1000], b0[1000], c0[1000], a1[1000], b1[1000], c1[1000], a2[1000], b2[1000], c2[1000], a3[1000], b3[1000], c3[1000], C[1000], a, b, c;
int i, j, A0, A1, A2, A3, B0, B1, B2, B3;
int num, line, k;
int min, max, m;
int CC, FS, YS;

k = 0;
A0 = 0; A1 = 0; A2 = 0; A3 = 0;
B0 = 0; B1 = 0; B2 = 0; B3 = 0;
cout << "四则运算" << endl;

cout << "请依次输入输出算式数量和每行显示数量:" << endl;
cin >> num >> line;

cout << "请问是否要有乘除法?有请输入\"1\",无请输入\"0\"" << endl;
cin >> CC;
while (1)                             //判断输入是否合法
{
    if (CC != 1 && CC != 0)
    {
        cout << "输入不合法,请重新输入\"1\"或\"0\":";
        cin >> CC;
    }
    else
        break;
}

cout << "请问是否要加减结果有负数?有请输入\"1\",无请输入\"0\"" << endl;
cin >> FS;
while (1)                             //判断输入是否合法
{
    if (FS != 1 && FS != 0)
    {
        cout << "输入不合法,请重新输入\"1\"或\"0\":";
        cin >> FS;
    }
    else
        break;
}

cout << "请问是否要除法结果有余数?有请输入\"1\",无请输入\"0\"" << endl;
cin >> YS;
while (1)                             //判断输入是否合法
{
    if (YS != 1 && YS != 0)
    {
        cout << "输入不合法,请重新输入\"1\"或\"0\":";
        cin >> YS;
    }
    else
        break;
}

cout << "请输入两个值确定算式中a,b的取值范围(请保证前一个值小于后一个值):" << endl;
cin >> min >> max;
while (1)                            //判断输入是否合法
{
    if (min >= max)
    {
        cout << "输入不合法,请重新输入:";
        cin >> min >> max;
    }
    else
        break;
}

m = max - min + 1;
for (i = 0; i < 1000; i++)
{
    a0[i] = 0; b0[i] = 0;
    a1[i] = 0; b1[i] = 0;
    a2[i] = 0; b2[i] = 0;
    a3[i] = 0; b3[i] = 0;
}
for (i = 0;; i++)
{
    a = min + rand() % m;
    b = min + rand() % m;
    c = rand() % 4;
    if (CC == 0)              //每当CC=0,就会抹去c=2,3的情况
    {
        if (c == 2 || c == 3)
            continue;
    }
    if (FS == 0)              //通过FS去除0和1,其结果小于0的情况
    {
        if (c == 0)
        {
            if (a + b < 0)
                continue;
        }
        else if (c == 1)
        {
            if (a - b < 0)
                continue;
        }
    }
    if (YS == 0)             //如果YS=0,且是除法,去除a,b相除有余数的情况
    {
        if (c == 3)
            if (0 != a % b)
                continue;
    }

    //将算式分为加、减、乘、除四组
    if (c == 0)                       //加法
    {
        for (j = 0; j <= A0; j++)
        {
            if (a == a0[j] && b == b0[j])
            {
                B0++; break;
            }
        }
        if (B0 > 0)
        {
            B0 = 0; continue;
        }
        else
        {
            a0[A0] = a;
            b0[A0] = b;
            c0[A0] = a + b;
            A0++;
        }
    }
    else if (c == 1)                   //减法
    {
        for (j = 0; j <= A1; j++)
        {
            if (a == a1[j] && b == b1[j])
            {
                B1++; break;
            }
        }
        if (B1 > 0)
        {
            B1 = 0; continue;
        }
        else
        {
            a1[A1] = a;
            b1[A1] = b;
            c1[A1] = a + b;
            A1++;
        }
    }
    else if (c == 2)                     //乘法
    {
        for (j = 0; j <= A2; j++)
        {
            if (a == a2[j] && b == b2[j])
            {
                B2++; break;
            }
        }
        if (B2 > 0)
        {
            B2 = 0; continue;
        }
        else
        {
            a2[A2] = a;
            b2[A2] = b;
            c2[A2] = a + b;
            A2++;
        }
    }
    else                               //除法
    {
        if (b == 0)
            continue;
        for (j = 0; j <= A3; j++)
        {
            if (a == a3[j] && b == b3[j])
            {
                B3++; break;
            }
        }
        if (B3 > 0)
        {
            B3 = 0; continue;
        }
        else
        {
            a3[A3] = a;
            b3[A3] = b;
            c3[A3] = a + b;
            A3++;
        }
    }
    if (num == A0 + A1 + A2 + A3)                //限制算式数量
        break;
}
//输出
for (i = 0; i < A0; i++)                        // +
{
    k++;
    if (a0[i] < 0)
        cout << "(" << a0[i] << ")";
    else
        cout << a0[i] << " ";
    cout << "+";
    if (b0[i] < 0)
        cout << "(" << b0[i] << ")";
    else
        cout << " " << b0[i] << " ";
    cout << "=";
    if (k % line == 0)
        cout << endl;
    else
        cout << "\t";
}
for (i = 0; i < A1; i++)                         // -
{
    k++;
    if (a1[i] < 0)
        cout << "(" << a1[i] << ")";
    else
        cout << a1[i] << " ";
    cout << "-";
    if (b1[i] < 0)
        cout << "(" << b1[i] << ")";
    else
        cout << " " << b1[i] << " ";
    cout << "=";
    if (k % line == 0)
        cout << endl;
    else
        cout << "\t";
}
for (i = 0; i < A2; i++)                         // *
{
    k++;
    if (a2[i] < 0)
        cout << "(" << a2[i] << ")";
    else
        cout << a2[i] << " ";
    cout << "*";
    if (b2[i] < 0)
        cout << "(" << b2[i] << ")";
    else
        cout << " " << b2[i] << " ";
    cout << "=";
    if (k % line == 0)
        cout << endl;
    else
        cout << "\t";
}
for (i = 0; i < A3; i++)                          // /
{
    k++;
    if (a3[i] < 0)
        cout << "(" << a3[i] << ")";
    else
        cout << a3[i] << " ";
    cout << "/";
    if (b3[i] < 0)
        cout << "(" << b3[i] << ")";
    else
        cout << " " << b3[i] << " ";
    cout << "=";
    if (k % line == 0)
        cout << endl;
    else
        cout << "\t";
}
cout << "请在此输入各式的结果:" << endl;
for (i = 0; i < num; i++)
    cin >> C[i];
int t = 0, corr = 0;
//判断输入结果的对错
for (i = 0; i < A0; i++)
{
    if (c0[i] == C[t])
    {
        t++; corr++;
    }
    else
    {
        t++;
        cout << "第" << t << "题答错!" << endl;
    }
}
for (i = 0; i < A1; i++)
{
    if (c1[i] == C[t])
    {
        t++; corr++;
    }
    else
    {
        t++;
        cout << "第" << t << "题答错!" << endl;
    }
}
for (i = 0; i < A2; i++)
{
    if (c2[i] == C[t])
    {
        t++; corr++;
    }
    else
    {
        t++;
        cout << "第" << t << "题答错!" << endl;
    }
}
for (i = 0; i < A3; i++)
{
    if (c3[i] == C[t])
    {
        t++; corr++;
    }
    else
    {
        t++;
        cout << "第" << t << "题答错!" << endl;
    }
}
if (line == corr)
    cout << "恭喜你都答对了!!!!!!" << endl;

```
运行结果如下图
起初使用VS2017时,编译完成后,出现了这样的提示:1786556-20190921194554025-1665614636.jpg提示我库的使用缺失。
再者,虽然解决了这个问题,可能是我配置支持语言的时候选漏了C++,虽然C++程序已经写好,又出现来这个提示:1786556-20190921194634597-2137996568.jpg对于语言的不支持,让我觉得心态有点小炸裂。

但是时不我待,救急的使用了DevC++这个编译环境对四则运算程序进行调试运行,运行结果如下:
运行结果1:1786556-20190921194712843-607961845.png
这次调试感觉产生的值较大,因此作为随笔的提交,我运行了一次相对简单的结果2如下:1786556-20190921195022171-1310219383.jpg

克隆项目及提交代码

克隆项目一知半解,都是按照以上链接做的,能力有限,大二的我还要继续努力,提高自己的知识面和技能值。

转载于:https://www.cnblogs.com/pythonzk/p/11564373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值