• 个人作业1-四则运算题目生成程序


    从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

    除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    运算符为 +, −, ×, ÷
    并且要求能处理用户的输入,并判断对错,打分统计正确率。
    要求能处理用户输入的真分数, 1/2, 5/12 等
    使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
    Myapp.exe -n 10

    需求分析:

    1、能分别支持整数、真分数的四则运算;
    2、判断用户的回答是否正确,并显示正确率;
    3、能够使用参数控制生成题目的个数;
    4、能够把分数运算结果转化为最简结果。

    功能设计:

    基本功能:整数、真分数的四则运算,显示正确率
    扩展功能:能控制生成题目的数量,对结果进行约分
    高级功能:能分数和整数混合运算,多运算符运算(暂未实现)

    设计实现:

    1.c++面向过程方法编写
    2.编写了三个函数:
    f():求2个数的最大公约数,为结果做约分提供方便;
    integer():整数四则运算
    fraction():分数四则运算

     代码演示:

     

    void  fraction(){
    
        int a,b,c,d,up,down,temp;//a,b,c,d表示一个数,up表示结果分子,down表示结果的分母
    
        char strre[10],stran[10],dow[10];//strre表示最后结果转化的字符,stran表示输入的答案
    
        srand(unsigned(time(NULL)));
    
        a=rand()%100+1;
    
        b=rand()%100+1;
    
        temp=f(a,b);
    
        a=a/temp;
    
        b=b/temp;
    
        c=rand()%100+1;
    
        d=rand()%100+1;
    
        temp=f(c,d);
    
        c=c/temp;
    
        d=d/temp;
    
        char sign,s[4]={'+','-','*','/'};
    
        sign=s[rand()%4];
    
        switch(sign){
    
            case '+':cout<<a<<"/"<<b<<" +"<<c<<"/"<<d<<"="<<endl;
    
                    up=(a*d)+(b*c);
    
                    down=b*d;
    
                    break;
    
            case '-':cout<<a<<"/"<<b<<" -"<<c<<"/"<<d<<"="<<endl;
    
                    up=(a*d)-(b*c);
    
                    down=b*d;
    
                    break;
    
            case '*':cout<<a<<"/"<<b<<" × "<<c<<"/"<<d<<"="<<endl;
    
                    up=a*c;
    
                    down=b*d;
    
                    break;
    
            case '/':cout<<a<<"/"<<b<<" ÷"<<c<<"/"<<d<<"="<<endl;
    
                    up=a*d;
    
                    down=b*c;
    
                    break;
    
                    }
    
        temp=f(up,down);
    
        up=up/temp;
    
        down=down/temp;
    
        itoa(up,strre,10);
    
        itoa(down,dow,10);
    
        strcat(strre,"/");
    
        strcat(strre,dow);
    
                    
    
        cin>>stran;
    
        if(strcmp(stran,strre)==0){
    
          cout<<"true"<<endl;
    
          right1++;
    
        }
    
        else cout<<"false"<<endl;
    
        
    
       }
    
     
    
     
    
     

    展示PSP:

    PSP2.1

    Personal Software Process Stages

    Time (%) Senior Student(/hour)

    Time (%)(/hour)

    · Planning

    计划

    3

    3.5

    · Estimate

    估计这个任务需要多少时间

    40

    45

    · Analysis

    需求分析 (包括学习新技术)

    1

    1

    · Coding Standard

    代码规范

    0.5

    0.5

    · Design

    具体设计

    1.5

    2

    · Coding

    具体编码

    32

    37

    · Test

    测试(自我测试,修改代码,提交修改)

    1

    1

    Reporting

    报告

    1

    1

    小结:编写程序的过程中,遇到的一个问题,就是分数怎么化简,当时有去参考网上的代码,发现把别人的代码拿来用也不是件简单的事,最终还是看懂代码,然后自己去写的整体而言,程序能满足题目的大部分要求,但在仍不具备处理类似分数整数混合运算、多运算符等问题。

  • 相关阅读:
    IE浏览器版本的判断
    Ajax中的同步和异步
    linq之多表连接
    C#中const 和 readonly 修饰符的用法详解
    sql中的分页实现
    JS中的编码,解码类型及说明
    HttpContext概念讲解
    VS语法书写提示
    c#版本23个设计模式
    批处理 使用默认浏览器 打开html文件
  • 原文地址:https://www.cnblogs.com/czmd1234/p/6516222.html
Copyright © 2020-2023  润新知