• 四则运算03(附第四周进度条)


    设计思想:

    1.将随机数生成、加减符号生成、乘除符号生成、括号生成、储存分别用函数封装

    2.用判断来进行运算,多个数的存在链中,先算乘除,后算加减。

    3.用一个全局变量来记数答对多少。

    4.判断是否有乘除,是否有负数,是否有余数、是否有括号、位数。

    5.通过判断依次引用函数。

    设计思想:
    1.将随机数生成、加减符号生成、乘除符号生成、括号生成、储存分别用函数封装
    2.用判断来进行运算,多个数的存在链中,先算乘除,后算加减。
    3.用一个全局变量来记数答对多少。
    4.判断是否有乘除,是否有负数,是否有余数、是否有括号、位数。
    5.通过判断依次引用函数。
    
    源程序
    #include<iostream>
    #include"string"
    #include<time.h>
    #include<stack>
    #define M 10;
    using namespace std;
    string *o;
    int j=0,js=0,correct=0;
    int Rnum(int min,int max ) //randon number (digit)
    {
        int random;
        
        random=(rand()%(max-min+1))+min;
        return random;
    }
    char Ras(int judgemd )// add  subtraction multiplication division operator
        {
            int random;
            char operation;
            if(judgemd==2)random=Rnum(1,2);
            else random=Rnum(3,4);
            switch(random)
            {
                case(1):{operation='+';break;}
                case(2):{operation='-';break;}
                case(3):{operation='*';break;}
                case(4):{operation='/';break;}
    
            }
            return operation;
        }
    bool Compare(string str)
    {
        bool b=true;
        for(int i=0;i<j;i++)
        {
            if(str==o[i])
            b=false;
        }
        return b;
    }
    void Storage(string str)//string or 邻ⅷ?接ó表括?
    {
        o[j]=str;
        j++;
    }
    void Asout (int judgen,int min,int max)// if here is not negaive it is true,else false
        {
            int num,num1,num2,num3;
            char ope;
            string o="";
            num1= Rnum(min,max);
            num2= Rnum(min,max);
            ope=Ras(2);
            if(judgen==2)
            {
                if(ope=='-')
                {
                    if(num1<num2)
                    {
                    num=num1;
                    num1=num2;
                    num2=num;
                    }
                }
            }
            o=num1+ope+num2;
            if(Compare(o)==true)
            {
                Storage(o);
                js++;
            }
            
            if(ope=='+')
            {
                num=num1+num2;
            }
            else
            {
                num=num1-num2;
            }
            //比括?较? 和í储洹?存?
            cout<<num1<<ope<<num2<<"=";
            cin>>num3;
            if(num3==num){cout<<"回?答鋏正y确ā?<<endl;correct++;}
            else {cout<<"正y确ā?答鋏案?为a"<<num<<endl;}
        }
    void Mdout(int judger,int min,int max)//
        {
            int num1,num2,num,num3,remainder,remainder2;
            char ope;
            string o;
            num1= Rnum(min,max);
            num2= Rnum(min,max);
            ope=Ras(1);
            if(ope=='/')
            {
                if(num2==0) {num2=Rnum(min,max);}
                else if(judger==2)
                {
                    num=num1*num2;
                    num1=num;
                }
                else
                {
                remainder=num1%num2;
                }
            }
            o=num1+ope+num2;
            if(Compare(o)==true)
            {
                Storage(o);
                js++;
            }
            if(ope=='*')
            {
                num=num1*num2;
                cout<<num1<<ope<<num2<<"=";
                cin>>num3;
                if(num3==num){cout<<"回?答鋏正y确ā?<<endl;correct++;}
            else {cout<<"正y确ā?答鋏案?为a"<<num<<endl;}
            }
            else
            {
                num=num1/num2;
                cout<<num1<<ope<<num2<<"=";
                if(remainder==0)
                {
                cin>>num3;
                if(num3==num){cout<<"回?答鋏正y确ā?<<endl;correct++;}
                else {cout<<"正y确ā?答鋏案?为a"<<num<<endl;}
                }
                else
                {
                cout<<"商Θ?为a";
                cin>>num3;
                cout<<"余�?数簓为a";
                cin>>remainder2;
                if(num3==num&&remainder==remainder2){cout<<"回?答鋏正y确ā?<<endl;correct++;}
                else {cout<<"正y确ā?答鋏案?为a"<<num<<"余�?数簓"<<remainder<<endl;}
                }
            }
            //比括?较? 和í储洹?存?
            
            
        }
    int Asmdout(int judgemd,int judgen,int judger,int min,int max)
        {
            if(judgemd==2)
            {
                Asout ( judgen, min, max);
            }
            else
            { 
                if(Rnum(1,2)==1)
                {
                Asout ( judgen, min, max);
                }
                else
                {
                Mdout(judger, min, max);
                }
            }
            return 0;
        }
    int Bracket(int judgemd,int min,int max)//it  has braket, randem digit.
        {
            int num,sum;
            num=Rnum(3,10);
            int *bnum;
            char *bope;
            typedef struct Num
            {
             //struct Num *prior;
             struct Num *next;
            int data;
            }Num,*Nlist;
            typedef struct Ope
            {
             //struct Ope *prior;
             struct Ope *next;
             char data;
            }Ope,*Olist;
            Nlist n=new Num;
            n->next=NULL;
            Nlist ir=n;
            Nlist ip;
            Olist o=new Ope;
            o->next=NULL;
            Olist cr=o;
            Olist cp;
            bnum= new int[num];
            bope=new char[num-1];
            for(int i=0;i<num;i++)
            {
                bnum[i]=Rnum(min,max);
                ip= new Num;
                ip->data=bnum[i];
                ip->next=NULL;
                ir->next=ip;
                ir=ip;
            }
            for(int i=0;i<num-1;i++)
            {
                bope[i]=Ras(Rnum(1,2));
                cp= new Ope;
                cp->data=bope[i];
                cp->next=NULL;
                cr->next=cp;
                cr=cp;
            }
    
            cp=o;ip=n;
            for(int i=0;i<num-1;i++)
            {
                if(cp->next->data=='*')
                {
                cr=cp;ir=ip;
                cr->next=cr->next->next;
                ir->next->data=ir->next->data*ir->next->next->data;
                ir->next->next=ir->next->next->next;
                continue;
                }
                if(cp->next->data=='/')
                {
                cr=cp;ir=ip;
                cr->next=cr->next->next;
                ir->next->data=ir->next->data/ir->next->next->data;
                ir->next->next=ir->next->next->next;
                continue;
                }
                cp=cp->next;
                ip=ip->next;
                if(cp->next->next==NULL) break;
            }
    
            cp=o;ip=n;
            for(int i=0;i<num-1;i++)
            {
                
                if(cp->next->data=='+')
                {
                cr=cp;ir=ip;
                cr->next=cr->next->next;
                ir->next->data=ir->next->data + ir->next->next->data;
                ir->next->next=ir->next->next->next;
                continue;
                }
                 if(cp->next->data=='-')
                {
                cr=cp;ir=ip;
                cr->next=cr->next->next;
                ir->next->data=ir->next->data - ir->next->next->data;
                ir->next->next=ir->next->next->next;
                continue;
                }
                cp=cp->next;
                ip=ip->next;
    
                if(cp->next->next==NULL) break;
            }
            for(int i=0;i<num;i++)
            {
                cout<<bnum[i];
                if(i==num-1){break;}
                cout<<bope[i];
            }
            
            js++;
            cout<<"=";
            cin>>sum;
            if(sum==n->next->data){cout<<"回?答鋏正y确ā?<<endl;correct++;}
            else{cout<<"回?答鋏错洙?误ó";}
            delete bnum,bope,ip,ir,cp,cr;
            return 0;
        }
    
    
    int main()
        {
            srand(time(NULL));
             int judgeb,judgemd,judgen,judger=2,min,max,n;
             cout<<"Do you want multiplication and division? 1.Yes 2.No"<<endl;
             cin>>judgemd;
             cout<<"Do you want bracket? 1.Yes 2.No"<<endl;
             cin>>judgeb;
             if(judgeb==2)
             {
                 cout<<"Do you want negative? 1.Yes 2.No"<<endl;
                 cin>>judgen;
                 if(judgemd==1)
                 {
                 cout<<"Do you want remainder? 1.Yes 2.No"<<endl;
                 cin>>judger;
                 }
             }
             cout<<"which is the scope of the number? input the min and max"<<endl;
             cin>>min>>max;
             cout<<"数簓量?"<<endl;
             cin>>n;
             o=new string[n];
             while(js<n)
             {
                 if(judgeb==1){ Bracket(judgemd, min, max);};
                 if(judgeb==2){Asmdout(judgemd, judgen, judger, min, max);};
    
             }
             cout<<"共2答鋏对?"<<correct<<"道台?题琣"<<endl;
             return 0;
        }

    日期任务 听课 编写程序 阅读课本 准备考试     日统计   日期 开始时间 结束时间 中断时间 净时间 活动 备注
    周日                 3.21 8:00 9:50 10 100 上课  
    周一 100 60         160   3.22            
    周二                 3.23 2:00 4:00   120 写程序  
    周三   120         120   3.24            
    周四                 3.25 7:15 9:30 15 120 写程序  
    周五   120         120   3.26 2:20 19:35 500 360 写程序  
    周六   360         360                
                                   
    日期 编号 引入阶段 排除阶段 修复时间 描述                    
    3.26 1 编码 译码   运用指针时,未知错误导致异常。                    
  • 相关阅读:
    java1.8--OptionalInt,OptionalDouble,OptionalLong类
    java1.8--Optional类
    java1.8--Null Object模式
    JDK自带的缓存--包装类的缓存
    函数式编程--lambda表达式对比匿名内部类
    java1.8--改进的接口
    Mybatis Generator(定制化)代码生成器
    Mybatis
    git fork
    git原理图解
  • 原文地址:https://www.cnblogs.com/zuhaoran/p/5323803.html
Copyright © 2020-2023  润新知