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;
    }
    
    
  • 相关阅读:
    gain 基尼系数
    luogu P5826 【模板】子序列自动机 主席树 vector 二分
    牛客挑战赛39 树与异或 离线 树上莫队 树状数组 约数
    4.22 省选模拟赛 三元组 manacher 回文自动机
    4.22 省选模拟赛 最优价值 网络流 最大权闭合子图
    4.18 省选模拟赛 消息传递 树剖 倍增 线段树维护等比数列
    luogu P4008 [NOI2003]文本编辑器 splay 块状链表
    牛客挑战赛39 密码系统 后缀数组
    luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
    luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
  • 原文地址:https://www.cnblogs.com/TG1999/p/12389501.html
Copyright © 2011-2022 走看看