• 计算与软件工程作业二


    计算与软件工程作业二

    一、作业要求

    作业一

    1.预习 阅读讲义<https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html >第二部分内容 2.个人开发技术
    2.个人程序(本作业内容来源于网址:https://www.cnblogs.com/xinz/p/7417960.html,与 <https://www.cnblogs.com/jiel/p/4810756.html >)像《构建之法》的 人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。 可以使用C,C++,或者C#等语言实现。

    • 分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
    • 要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
    • 对于三、四、五年级需要支持括号与多个运算符
    • 程序支持判断对错及累计得分与时间
    • 一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
    • 充分发挥想象增加满足小学生数学检测需要的功能
    作业二
    1. git学习与码云代码托管平台gitee阅读网址如下关于git的使用https://www.liaoxuefeng.com/wiki/896043488029600https://gitee.com/help/categories/43通过之前已经注册的码云账号,学会简单的使用将作业1所写代码托管到gitee平台上个人仓库

    2. 在博客园给出作业并包括所写的代码,同时给出托管于gitee上的链接

    具体链接https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402

    二、代码

    #include <iostream>
    using namespace std;
    
    class Calcution{
    public:
        Calcution();
        char getSignal();
        void addsub(int n);
        void muldiv(int n);
        void decial(int n);
        void fraction(int n);
        void mixed(int n);
        void Gradeone(int n);
        void Gradetwo(int n);
        void Gradethree(int n);
        void Gradefour(int n);
        void Gradefive(int n);
    private:
        int n;
    };
    
    
    
    Calcution::Calcution():n(0){};
    
    //随机获得运算符
    char Calcution::getSignal(){
        char signal[]={'+','-','*','/'};
        srand((unsigned)time(NULL));
        return signal[rand()%4];
    }
    
    //整数加减
    void Calcution::addsub(int n){
        int a,b,c;
        a=rand()%n+1;
        b=rand()%n+1;
        if(a+b>=n){
            a=rand()%n+1;
            b=rand()%n+1;
        }
        c=rand()%2;
        switch(c){
            case(0):
                cout<<a<<"+"<<b<<"="<<endl;break;
            case(1):
                if(a<b){
                    int tmp=0;
                    tmp=a;
                    a=b;
                    b=tmp;
                    cout<<a<<"-"<<b<<"="<<endl;break;
                    }
            }
    }
    
    //整数乘除
    void Calcution::muldiv(int n){
        int a,b,c;
        a=rand()%n+1;
        b=rand()%n+1;
        if(a*b>=n){
            a=rand()%n+1;
            b=rand()%n+1;
        }
        c=rand()%2;
        switch(c){
            case(0):
                cout<<a<<"*"<<b<<"="<<endl;break;
            case(1):
                if(b==0){
                    b=rand()%n;
                }
                cout<<a<<"÷"<<b<<"="<<endl;break;
        }
    }
    
    //小数加减乘除
    void Calcution::decial(int n){
        double a,b;
        a=(double)(rand()%n+1)/1000;
        b=(double)(rand()%n+1)/1000;
        cout<<a<<getSignal()<<b<<"="<<endl;
    }
    
    //分数加减乘除
    void Calcution::fraction(int n){
        int mole1,deno1,mole2,deno2;
        mole1=rand()%10;
        deno1=rand()%10+1;
        mole2=rand()%10;
        deno2=rand()%10+1;
        //a=rand()%4;
        while(mole1>deno1 || mole2>deno2){
            mole1=rand()%10;
            deno1=rand()%10;
            mole2=rand()%10;
            deno2=rand()%10;
        }
        cout<<mole1<<"/"<<deno1<<getSignal()<<mole2<<"/"<<deno2<<"="<<endl;
    }
    
    void Calcution::mixed(int n){
        int a,b,c,d;
        a=rand()%n+1;
        b=rand()%n+1;
        c=rand()%n+1;
        d=rand()%2;
        if(d==0)
            cout<<"("<<a<<getSignal()<<b<<")"<<getSignal()<<c<<"="<<endl;
        if(d==1)
            cout<<a<<getSignal()<<"("<<b<<getSignal()<<c<<")"<<"="<<endl;
    }
    
    
    //一年级加减法,难中易分别对应100,50,10以内的运算
    void Calcution::Gradeone(int n){
        for(int i=0;i<100;i++){
            addsub(n);
        }
    }
    
    
    //二年级在一年级的基础上加入乘除法,难中易分别对应100,50,10以内的运算
    void Calcution::Gradetwo(int n){
        for(int i=0;i<100;i++){
            int a=rand()%3;
            if(a==0)
                addsub(n);
            if(a==1 || a==2)
                muldiv(n);
        }
    }
    
    //三年级在一二年级的基础上加入分数,难中易分别对应100,50,10以内的运算
    void Calcution::Gradethree(int n){
        for(int i=0;i<100;i++){
            int a=rand()%4;
            if(a==0)
                addsub(n);
            if(a==1)
                muldiv(n);
            if(a==2 || a==3)
                fraction(n);
        }
    }
    
    //四年级在一二三年级基础上加入分数计算,难中易分别对应100,50,10以内的运算
    void Calcution::Gradefour(int n){
        for(int i=0;i<100;i++){
            int a=rand()%5;
            if(a==0)
                addsub(n);
            if(a==1)
                muldiv(n);
            if(a==2)
                fraction(n);
            if(a==3 || a==4)
                decial(n);
        }
    }
    
    //五年级在一二三四年级基础上加入混合运算,难中易分别对应100,50,10以内的运算
    void Calcution::Gradefive(int n){
        for(int i=0;i<100;i++){
            int a=rand()%6;
            if(a==0)
                addsub(n);
            if(a==1)
                muldiv(n);
            if(a==2)
                decial(n);
            if(a==3)
                fraction(n);
            if(a==4 || a==5)
                mixed(n);
        }
    }
    
    int main(){
        Calcution cal;
        int a;
        cout<<"请输入年级:1~5年级 (输入对应的年级数即可)"<<endl;
        cin>>a;
        switch(a){
            case(1):
                int o;
                cout<<"请选择难度: 1、易  2、中  3、难 (输入前面数字)"<<endl;
                cin>>o;
                if(o==1)
                    cal.Gradeone(10);
                if(o==2)
                    cal.Gradeone(50);
                if(o==3)
                    cal.Gradeone(100);
                break;
            case(2):
                int t;
                cout<<"请选择难度: 1、易  2、中  3、难(输入前面数字)"<<endl;
                cin>>t;
                if(t==1)
                    cal.Gradetwo(10);
                if(t==2)
                    cal.Gradetwo(50);
                if(t==3)
                    cal.Gradetwo(100);
                break;
            case(3):
                int h;
                cout<<"请选择难度: 1、易  2、中  3、难(输入前面数字)"<<endl;
                cin>>h;
                if(h==1)
                    cal.Gradethree(10);
                if(h==2)
                    cal.Gradethree(50);
                if(h==3)
                    cal.Gradethree(100);
                break;
            case(4):
                int f;
                cout<<"请选择难度: 1、易  2、中  3、难(输入前面数字)"<<endl;
                cin>>f;
                if(f==1)
                    cal.Gradefour(10);
                if(f==2)
                    cal.Gradefour(50);
                if(f==3)
                    cal.Gradefour(100);
                break;
            case(5):
                int v;
                cout<<"请选择难度: 1、易  2、中  3、难(输入前面数字)"<<endl;
                cin>>v;
                if(v==1)
                    cal.Gradefive(10);
                if(v==2)
                    cal.Gradefive(50);
                if(v==3)
                    cal.Gradefive(100);
                break;
        }
        return 0;
    }
    

    总结:程序中括号混合运算等都是简单的直接输出,缺少判重以及答案,数据结构知识正在重新学习中……

    gitee链接

    https://gitee.com/Vhe_jian/Learning

  • 相关阅读:
    博客作业01-日期抽象数据类型的设计与实现
    C语言博客作业06--结构体&文件
    C语言博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03---函数
    C语言博客作业02----循环结构
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
  • 原文地址:https://www.cnblogs.com/jian-He/p/12388633.html
Copyright © 2020-2023  润新知