zoukankan      html  css  js  c++  java
  • 计算与软件共程作业2

    作业要求:

    https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402

    作业1

    预习

    阅读讲义( https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html )第二部分内容 2. 个人开发技术

    • 软件开发流程不光指团队的流程, 软件团队是由个人组成的。在团队的大流程中, 是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此, 个人在软件团队中也有个人的流程。
      软件开发的工作量和质量怎么衡量呢? PSP认为有下列4 个因素:
    • 项目/任务有多大?
      说明项目的大小, 一般用代码行数 (Line Of Code, LOC) 来表示;也可以用功能点 (function point). 一个重要的指标是: 你在实际产品中写了多少代码, 不包括空行/注释行/单字符行 .
    • 花了多少时间?
      可以用小时, 天,月,年来表示。一组人所花费的时间可以用 (人数*时间) 来表示,例如某项目花费了10个人·月。
    • 质量如何?
      可以用缺陷的数量来除以项目的大小。 例如 5 bugs / KLOC, 意味着每千行程序有5个缺陷。
    • 是否按时交付?
      稳定即可

    两种效能分析方法:抽样(Sampling), 代码注入(Instrumentation)

    单元测试:

    • 单元测试应该在最低的功能/参数上验证程序的正确性。
    • 单元测试必须由最熟悉代码的人(程序的作者)来写。
    • 单元测试过后,机器状态保持不变。
    • 单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)。
    • 单元测试应该产生可重复、一致的结果
    • 单元测试应该覆盖所有代码路径,包括错误处理路径,为了保证单元测试的代码覆盖率,单元测试必须测试公开的和私有的函数/方法。
    • 单元测试应该集成到自动测试的框架中
    • 单元测试必须和产品代码一起保存和维护。

    个人程序

    (本作业内容来源于网址:https://www.cnblogs.com/xinz/p/7417960.html,
    https://www.cnblogs.com/jiel/p/4810756.html
    像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。 可以使用C,C++,或者C#等语言实现。

    要求

    分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
    要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
    对于三、四、五年级需要支持括号与多个运算符
    程序支持判断对错及累计得分与时间
    一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
    充分发挥想象增加满足小学生数学检测需要的功能
    编程思路:

    • 四则运算.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
      分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
    • 解决思路:switch进行变量控制,年纪用+,-,,/,运算个数来分类。一年级只有+,-,二年级三个数进行+,-,三年级,/,四年级三个数运算,五年级小数运算。()加入其中。
      要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
    • 解决思路,易0-100以内运算,中,100-1000以内运算,难,1000-10000以上运算
      程序支持判断对错及累计得分与时间
    • 解决思路:对错用count计数,最终算出正确率。时间用clock函数计算
      一次可以出100道题目,而且不能重复(比如2 + 3 与 3 + 2 算重复的)
    • 采用不重复随机算法,尽量降低重复。
      充分发挥想象增加满足小学生数学检测需要的功能
    • 想法:支持循环测验。
      运行结果:

    作业2

    git学习与码云代码托管平台gitee

    1. 阅读网址如下关于git的使用https://www.liaoxuefeng.com/wiki/896043488029600或https://gitee.com/help/categories/43
    2. 通过之前已经注册的码云账号,学会简单的使用将作业1所写代码托管到gitee平台上个人仓库
      在博客园给出作业并包括所写的代码,同时给出托管于gitee上的链接
      程序下载非常的慢,我就直接用网页端提交了,发现效果挺好。
      https://gitee.com/TG1999/four_arithmetic_operations/blob/master/四则运算/四则运算.cpp

    代码:

    // 四则运算.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度 
    //解决思路:switch进行变量控制,年纪用+,-,*,/,运算个数来分类。一年级只有+,-,二年级三个数进行+,-,三年级*,/,四年级三个数运算,五年级小数运算。()加入其中。
    //要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级 
    //解决思路,易0-100以内运算,中,100-1000以内运算,难,1000-10000以上运算
    //程序支持判断对错及累计得分与时间
    //解决思路:对错用count计数,最终算出正确率。时间用clock函数计算
    //一次可以出100道题目,而且不能重复(比如2 + 3 与 3 + 2 算重复的)
    //采用不重复随机算法,尽量降低重复。
    //充分发挥想象增加满足小学生数学检测需要的功能 
    //想法:支持循环测验。
    
    
    #include <iostream>
    #include<cstdlib>
    #include<time.h>
    #define CLOCKS_PER_SEC ((clock_t)1000)
    using namespace std;
    int Difficulty(int difficulty)
    {
        int N=0;
        switch (difficulty)
        {
        case 1:
            N = 100;
            break;
        case 2:
            N = 1000;
            break;
        case 3:
            N = 10000;
            break;
        default:
            cout << "请输入正确的难度。" << endl;
            break;
        }
        return N;
    }
    void Grade(int grade,int numberExercise,int N) {
        double a1, a2, a3,c,k, correctrate;
        double duration;//做题花费的时间
        clock_t start, finish;
    int mode, count = 0;
        switch (grade)
        {
        case 1: //+,-,2
            start = clock();
            srand((unsigned)time(NULL));
            for (int i = 0; i < numberExercise; i++) {
                a1 = rand() % N;
                a2 = rand() % N;
                mode = rand() % 2;
                switch (mode) //确定运算符
                {
                case 0:
                    cout << a1<< "+" << a2 << "=" << endl;
                    c = a1+a2;
                    break;
                case 1:
                    c = a1-a2;
                    cout << a1 << "-" << a2<< "=" << endl;
                    break;
                }
                cout << "请输入答案:";
                cin >> k;
                if (k == c) {
                    cout << "恭喜你答对了,请再接再厉" << endl;
                    count = count + 1;
                }
                else if (k != c) {
                    cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
                }
            }
            correctrate = (count*100) / numberExercise;
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" <<"  一共耗时(s):"<<duration<<endl;
            break;
        case 2://+-,3
            start = clock();
            srand((unsigned)time(NULL));
            for (int i = 0; i < numberExercise; i++) {
                a1 = rand() % N;
                a2 = rand() % N;
                a3 = rand() % (2*N)-N;
                mode = rand() % 2;
                switch (mode) //确定运算符
                {
                case 0:
                    cout << a1 << "+" << a2 <<"+("<<a3<< ")=" << endl;
                    c = a1+a2+a3;
                    break;
                case 1:
                    c = a1 - a2+a3;
                    cout << a1 << "-" << a2 <<"+("<<a3<< ")=" << endl;
                    break;
                }
                cout << "请输入答案:";
                cin >> k;
                if (k == c) {
                    cout << "恭喜你答对了,请再接再厉" << endl;
                    count = count + 1;
                }
                else if (k != c) {
                    cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
                }
            }
            correctrate = (count * 100) / numberExercise;
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << "  一共耗时(s):" << duration << endl;
            break;
        case 3://*,/,2
            start = clock();
            srand((unsigned)time(NULL));
            for (int i = 0; i < numberExercise; i++) {
                a1 = rand() % N;
                a2 = rand() % N;
                mode = rand() % 4;
                switch (mode) //确定运算符
                {
                case 0:
                    cout << a1 << "+" << a2 << "=" << endl;
                    c = a1 + a2;
                    break;
                case 1:
                    c = a1 - a2;
                    cout << a1 << "-" << a2 << "=" << endl;
                    break;
                case 2:
                    c = a1 * a2;
                    cout << a1 << "*" << a2 << "=" << endl;
                    break;
                case 3:
                    c = a1 / a2;
                    cout << a1 << "/" << a2 << "=" << endl;
                    break;
                }
                cout << "请输入答案:";
                cin >> k;
                if (k == c) {
                    cout << "恭喜你答对了,请再接再厉" << endl;
                    count = count + 1;
                }
                else if (k != c) {
                    cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
                }
            }
            correctrate = (count * 100) / numberExercise;
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << "  一共耗时(s):" << duration << endl;
            break;
        case 4://+,-,*,/,3
            start = clock();
            srand((unsigned)time(NULL));
            for (int i = 0; i < numberExercise; i++) {
                a1 = rand() % N;
                a2 = rand() % N;
                a3 = rand() % (2 * N) - N;
                mode = rand() % 4;
                switch (mode) //确定运算符
                {
                case 0:
                    cout << a1 << "+(" << a2 <<"*("<<a3<<"))=" << endl;
                    c = a1 + a2*a3;
                    break;
                case 1:
                    c = a1 - a2/a3;
                    cout << a1 << "-(" << a2 << "/(" << a3 << "))=" << endl;
                    break;
                case 2:
                    c = a1 * (a2-a3);
                    cout << a1 << "*(" << a2 << "-(" << a3 << "))=" << endl;
                    break;
                case 3:
                    c = a1 / (a2+a3);
                    cout << a1 << "/(" << a2 << "+(" << a3 << "))=" << endl;
                    break;
                }
                cout << "请输入答案:";
                cin >> k;
                if (k == c) {
                    cout << "恭喜你答对了,请再接再厉" << endl;
                    count = count + 1;
                }
                else if (k != c) {
                    cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
                }
            }
            correctrate = (count * 100) / numberExercise;
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << "  一共耗时(s):" << duration << endl;
            break;
        case 5://小数运算
            start = clock();
            srand((unsigned)time(NULL));
            for (int i = 0; i < numberExercise; i++) {
                a1 = rand() % N+ rand() / double(RAND_MAX);//加上0-1的小数,即可。
                a2 = rand() % N+ rand() / double(RAND_MAX);
                a3 = rand() % (2 * N) - N+ rand() / double(RAND_MAX);
                mode = rand() % 4;
                switch (mode) //确定运算符
                {
                case 0:
                    cout << a1 << "+(" << a2 << "*(" << a3 << "))=" << endl;
                    c = a1 + a2 * a3;
                    break;
                case 1:
                    c = a1 - a2 / a3;
                    cout << a1 << "-(" << a2 << "/(" << a3 << "))=" << endl;
                    break;
                case 2:
                    c = a1 * (a2 - a3);
                    cout << a1 << "*(" << a2 << "-(" << a3 << "))=" << endl;
                    break;
                case 3:
                    c = a1 / (a2 + a3);
                    cout << a1 << "/(" << a2 << "+(" << a3 << "))=" << endl;
                    break;
                }
                cout << "请输入答案:";
                cin >> k;
                if (k == c) {
                    cout << "恭喜你答对了,请再接再厉" << endl;
                    count = count + 1;
                }
                else if (k != c) {
                    cout << "虽然答错了,但不要灰心哦,正确答案是" << c << endl;
                }
            }
            correctrate = (count * 100) / numberExercise;
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout << "恭喜你做完了" << numberExercise << "道题目,做对了" << count << "道题目,正确率为 " << correctrate << "%" << "  一共耗时(s):" << duration << endl;
            break;
        default:
            cout << "请输入正确的年级。" << endl;
            break;
        }
    }
    int main()
    {
        int T;
        do {
            int grade, numberExercise, difficulty, N = 0;
            cout << "请选择您的当前年级:1:一年级,2:二年级,3:三年级,4:四年级,5:五年级。" << endl;
            cin >> grade;
            cout << "请选择难度:1:简单,2:普通,3:困难。" << endl;
            cin >> difficulty;
            cout << "请输入你要做的题数:" << endl;
            cin >> numberExercise;
            N = Difficulty(difficulty);
            Grade(grade, numberExercise, N);
            cout << "如果您想继续做题,请输入1,退出系统请输入其他任意数" << endl;
            cin >> T;
        } while (T==1);
        system("pause");
        return 0;
    }
    
    
  • 相关阅读:
    基于vue-cli 引入iview ui
    微信小程序之swiper
    使用Python玩转WMI
    Python内存数据库/引擎
    Windows安装包制作指南——Advanced Installer的使用
    Windows 2003上 SaltStack/Salt 和 psutil 可能存在的问题及解决
    Unity Shader——Writing Surface Shaders(3)——Surface Shader Lighting Examples
    Unity Shader——Writing Surface Shaders(2)——Custom Lighting models in Surface Shaders
    Unity Shader——Writing Surface Shaders(1)——Surface Shader Examples
    Unity Shader——Writing Surface Shaders(0)
  • 原文地址:https://www.cnblogs.com/TG1999/p/12389501.html
Copyright © 2011-2022 走看看