zoukankan      html  css  js  c++  java
  • 结对作业2

    题目要求

    我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
    能够自动生成四则运算练习题
    可以定制题目数量
    用户可以选择运算符
    用户设置最大数(如十以内、百以内等)
    用户选择是否有括号、是否有小数
    用户选择输出方式(如输出到文件、打印机等)
    最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)


    代码地址

    class Subject
    {
        public:
            Subject(int num,int m,int n,int b[4],int k,int x)  //
            {
                memcpy(a,b,4*sizeof(int));
                subject_num = num;
                max_num = m;
                sign_num = n;
                brackets = k;
                decimal = x;
    
            }
    
            string sign()     //随机选择运算符
            {
                while(1)
                {
                    int i=rand()%4;
                    if(a[i])
                    {
                        return Map[i];
                    }
                }
            }
            string get_num()      //随机产生数字
            {
                stringstream n;
                if(decimal)
                {
                    n<<rand()%(max_num*100)/double(100);
                }
                else
                {
                    n<<rand()%max_num+1;
                }
                return n.str();
            }
            void output(char t[])         // 输出到文件
            {
    
                ofstream out(t);
                if(!out)        //
                    cout<<"error"<<endl;
                stringstream s;
                int i,j,flag=0,count=0;
                for(i=0;i<subject_num;i++)  //生成运算式
                {
    
                    for(flag=0,count=0,j=0;j<sign_num;j++)
                    {
    
    
                        if(brackets&&rand()%4==0)    //有括号&&将随机概率设为1/4  
                        {
                            s<<"(";
                            flag=1;         //左括号"("后有数字
                            count++;        //左括号"("个数
                        }
                        s<<get_num();
                        if(count&&flag==0&&rand()%3==0)    //已有左括号"("&&前面为符号加数字&&将随机概率设为1/3
                        {
                            s<<")";
                            count--;
                        }
                        else
                            flag=0;
                        s<<sign();
                    }
                    s<<get_num();
    
                    while(count!=0)         //有未匹配左括号"("
                    {
                        s<<")";
                        count--;
                    }
                    out<<s.str()<<"=
    ";
                    s.str("");
                }
    
                out.close();
                cout<<t<<"文件已生成。"<<endl;
            }
    
    
        private:
            int subject_num,max_num,sign_num,brackets,decimal;        //题目数量,最大数,运算符数量 //括号,小数
            int a[4];           //选择运算符
    
    };
    

    运行效果

    image


    小结

    很遗憾没能做出界面来,最初的想法是用Python/PyQt5来做,结果崩掉了,临时改成用Python/wxpython做,嫌弃界面丑做一半放弃了,最后决定用C++/Qt来做,但是由于不够熟练还是没能在截至前做出来...最后的最后还是只做出来了个小黑框...还是粗糙版的..由于在界面上浪费了大量的时间,还有许多功能未完善(如删除无效括号,判断能否整除等),留坑等完善。
    对驾驶员评价:在过程中起到了很好的领导督促作用,互相督促,避免了许多不必要的小错误,并且带动积极性,在遇到困难的时候相互鼓励,坚持沟通,保持良好的情绪,提出了许多新的想法与建议,在敲代码的过程中相互讨论,能够快速的发现与解决问题,节省了许多时间,从对方那里得到新的启发,学到了许多平时学不到的东西,得到了能力上的互补,在测试过程中能够发现问题并且提出新的思路,通过本次的作业,充分理解到了合作的重要性,也认识到了一些合作中的注意事项,有了这次的作业经验后,在以后的编程中会注意对时间的规划。

  • 相关阅读:
    mysqli使用记录
    D3力布图绘制--基本方法
    使用SVG绘制流程图
    关于echarts绘制树图形的注意事项(文字倾斜、数据更新、缓存重绘问题等)
    如何在iview组件中使用jsx
    素描学习记录2
    关于react-router-dom的一些记录
    素描学习记录1
    Typescript中一些不理解的概念解释(泛型、断言、解构、枚举)
    关于this的全面解析(call,apply,new)
  • 原文地址:https://www.cnblogs.com/rxxtn/p/8870708.html
Copyright © 2011-2022 走看看