• 四则运算3


    一、设计思想

    在此前程序拥有的功能:加减有无负数,除法有无余数,以及算式可定制的功能的基础上,此次程序又添加了算式结果的计算,提示用户结果正确与否,正确与错误个数和用户意志存入数组的功能。
        1.对于运算符的选择和算式个数,各算式的长短均利用随机数函数产生。
        2.对于算式计算方面:
      只有两个数的加减乘除没有括号时:在减时考虑是否出现负数,除时考虑是否出现余数。
      多个数的加减没有乘除和括号时:遇到减号考虑前面结果是否小于减数,是则改变运算符为加号以确保最终结果没有负数。
      多个数的加减乘除没有括号时:在检索到式子中的乘除号时,判断其后面的符号,若有连续的乘除号,特别是有除号的时候,考虑是否需要余数,若有余数则利用找被除数因子的方法使连除的时候得数为整数,若无余数则将被除数和除数分别作为分子和分母保存起来。之后将只含有乘除号的连续子式先算出存入另一数组中,再与加减号相连的数进行相应的运算,在遇到加减运算符时,如果有余数,则利用通分的方法将结果保存为分数的形式。之后判断是否需要有负数,如果不需要负数,则在遇到减号时,将处在减数位置的式子利用随机数进行数值的重组,直到被减数大于减数为止。
    3.对于算式输出方面:文件输出使用了ofstream文件输出流,输出到problems.txt中。
    4.对于用户输入答案,判断用户输入字符串是否与正确结果相匹配,如果匹配,则提示恭喜你,答对了,否则提示回答错误,并且给出正确答案。利用循环计数判断正确回答题目的个数,在答题结束后显示在屏幕上。

    不能实现的部分是当有括号有乘除的部分,有思路,写了代码,但是有bug,尚未实现,在源程序中注释掉的部分。

    二、源程序代码

    #include<iostream.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {  
        srand(time(NULL)); 
        int sz;              //sz 即数值取值范围
        char fh;             //fh即四则运算中的加减乘除
        cout<<"请输入运算数的最大取值范围:";
        cin>>sz;
        cout<<"***********************************************"<<endl;
        for(int i=0;i<30;i++)        
        {   
            int a=rand()%sz;     
            int b=rand()%sz;               
            int    c=rand()%4;   
            if(c==0)                
            {           
                fh='+';   
            }     
            if(c==1)   
            {           
                fh='-';   
            }  
            if(c==2)   
            {           
                fh='*';   
            }    
            if(c==3)   
            {           
                fh='/';   
            }
            cout<<i+1<<""<<a<<fh<<b<<'='<<"         ";
        }
        cout<<"***********************************************"<<endl;
        return 0;
    }

    1.当输入最大取值范围为 99999999999999999999 时,运算数都是很大的正整数,结果正确。
    2.当输入最大取值范围为 100 时,运算数都是小于100的正整数,结果正确。
    3.当输入最大取值范围为 0 时,程序不能运行,立即停止工作。
    4.当输入最大取值范围为 -100 时,运算数都是小于100的正整数,结果出现错误。
    5.当输入最大取值范围为 -99999999999999999999 时,运算数都是很大的正整数,结果出现错误。

    测试分析:
    当输入一个负数,程序会将它看作其绝对值处理,也就是说,此程序不能实现负数的操作。当输入0,其判断没有比0小的数,自动停止工作。当输入结果大于0,其能正常工作。
  • 相关阅读:
    在阿里云申请Symantec免费SSL证书操作流程
    http改造成https的实践案例
    Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面
    【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)
    【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)
    打开文件或者uri的方式--------进程启动文件和启动者启动文件
    C# 各版本新特性
    iOS: 音效和音乐的播放,封装的工具类
    iOS: xcode打包上传iTunes失败,iTunes Store operation failed,this action can not complete .try again
    iOS: 详细的正则表达式
  • 原文地址:https://www.cnblogs.com/dgj1314/p/5272521.html
Copyright © 2020-2023  润新知