zoukankan      html  css  js  c++  java
  • 软件工程个人作业03

    设计思路:这次主要功能是判断输入的结果是否正确,首先真分数运算就需要先约分,然后判断输入分子分母是否正确就可以了。最主要的就是多项式运算,先用一个数组储存数,再用一个数组储存运算符,然后查找运算符,乘除先算,每算一次压缩一次数组,然后再进行加减运算。

    源代码:

    #include <iostream>
    #include <ctime>
    #include <string>
    using namespace std;
    
    int main()
    {
        int n = 100;
        int i1,i2,ii3,ia3,i4,i5;
        while(n)
        {    
            cout << "~~~~~~~~~~~~~~四则运算~~~~~~~~~~~~~~" << endl;
            cout << "|--------------0.退出--------------|" << endl;
            cout << "|---------1.是否有乘除运算---------|" << endl;
            cout << "|---------2.是否有括号运算---------|" << endl;
            cout << "|--------3.运算数值取值范围--------|" << endl;
            cout << "|------4.加减运算中是否有负数------|" << endl;
            cout << "|------5.除法运算中是否有余数------|" << endl;
            cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
            cout << "请输入您的选择:";
            cin >> n;
    
            switch(n)
            {
                case 1:
                    cout << "若有乘除则输入1,若没有则输入0:";
                    cin >> i1;break;
                case 2:
                    cout << "若有括号则输入1,若没有则输入0:";
                    cin >> i2;break;
                case 3:
                    cout << "输入范围最小值:";
                    cin >> ii3;
                    cout << "输入范围最大值:";
                    cin >> ia3;break;
                case 4:
                    cout << "若加减有负数则输入1,若没有则输入0:";
                    cin >> i4;break;
                case 5:
                    cout << "若除法有余数则输入1,若没有则输入0:";
                    cin >> i5;break;
            }
        }
    
        int i =0;
        int zq = 0;
        int cw = 0;
        srand((unsigned)time(0));
        while(i<10)
        {
            int x,y,a1,a2,a3,a4,r,u,k,l;
            string a[1000],b[1000],c[1000];
            int flag = 0;
            x = rand() % 2;
            y = rand() % 4;
            a1 = rand() % (ia3-ii3+1) + ii3;
            a2 = rand() % (ia3-ii3+1) + ii3;
            a3 = rand() % (ia3-ii3+1) + ii3;
            a4 = rand() % (ia3-ii3+1) + ii3;
            
            if(i1==0)
            {
                if(y==2)
                    y = 0;
                else if(y==3)
                    y = 1;
            }
    
            if(i4==0)
            {
                int q;
                if(x==0&&y==1)
                {
                    if((a1-a2)<0)
                    {
                        q = a1;
                        a1 = a2;
                        a2 = q;
                    }
                }
            }
    
            if(i5==0)
            {
                int p;
                if(x==0&&y==3)
                {
                    p = a1 % a2;
                    if(p!=0)
                    {
                        a1 = a1 + a2 - p;
                    }
                }
            }
            
            a[i] = a1;
            b[i] = a2;
            c[i] = y;
            for(int t=0;t<i;t++)
            {
                if(a[i]==a[t]&&b[i]==b[t]&&c[i]==c[t])
                {
                    flag = 1;
                }
            }
            if(flag==1)
            {
                i = i-1;
            }
            else
            {
                if(x==0)
                {
                    if(y==0)
                    {    
                        cout << a1 << "+" << a2 << "=" << endl;
                        u = a1 + a2;
                        cout << "请输入运算结果:";
                        cin >> r;
                        if(r==u)
                        {    
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==1)
                    {    
                        cout << a1 << "-" << a2 << "=" << endl;
                        u = a1 - a2;
                        cout << "请输入运算结果:";
                        cin >> r;
                        if(r==u)
                        {    
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==2)
                    {    
                        cout << a1 << "*" << a2 << "=" << endl;
                        u = a1 * a2;
                        cout << "请输入运算结果:";
                        cin >> r;
                        if(r==u)
                        {    
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==3)
                    {    
                        cout << a1 << "/" << a2 << "=" << endl;
                        if(a1%a2==0)
                        {
                            u = a1 / a2;
                            cout << "请输入运算结果:";
                            cin >> r;
                            if(r==u)
                            {
                                cout << "正确!" << endl;
                                zq++;
                            }
                            else
                            {
                                cout << "错误!" << endl;
                                cw++;
                            }
                        }
                        else
                        {
                             int small;
                             if(a1-a2>0)
                             {
                                 small = a2;
                             }
                             else
                             {
                                 small = a1;
                             }
                             for(int d=small;d>0;d--)
                             {
                                 if(a1%d==0&&a2%d==0)
                                 {
                                    a1 = a1 / d;
                                    a2 = a2 / d;
                                    break;
                                 }
                             }
                             cout << "请输入分子和分母:";
                             cin >> r >> u;
                             if(r==a1&&u==a2)
                             {
                                 cout << "正确!" << endl;
                                 zq++;
                             }
                             else
                             {
                                 cout << "错误!" << endl;
                                 cw++;
                             }
                        }
                    }
                }
                else if(x==1)
                {
                    int a,b,temp;
                    a = a1 - a2;
                    b = a3 - a4;
                    if(a<=0)
                    {
                        temp = a1;
                        a1  = a2;
                        a2 = temp;
                    }
                    if(b<=0)
                    {
                        temp = a3;
                        a3 = a4;
                        a4 = temp;
                    }
                    if(a2==0)
                    {
                        a2 = rand() % (ia3-ii3) + ii3 + 1;
                    }
                    if(a4==0)
                    {
                        a4 = rand() % (ia3-ii3) + ii3 + 1;
                    }
                    for(int c=a2;c>0;c--)
                    {
                        if(a1%c==0&&a2%c==0)
                        {
                            a1 = a1 / c;
                            a2 = a2 / c;
                            break;
                        }
                    }
                    for(int d=a4;d>0;d--)
                    {
                        if(a3%d==0&&a4%d==0)
                        {
                            a3 = a3 / d;
                            a4 = a4 / d;
                            break;
                        }
                    }
                    if(y==0)
                    {    
                        cout << "(" << a1 << "/" << a2 << ")" << "+" << "(" << a3 << "/" << a4 << ")" << "=" << endl;
                        k = (a1 * a4) + (a2 * a3);
                        l = a2 * a4;
                        int small;
                        if(k-l>0)
                        {
                            small = l;
                        }
                        else
                        {
                            small = k;
                        }
                        for(int d=small;d>0;d--)
                        {
                            if(k%d==0&&l%d==0)
                            {
                                k = k / d;
                                l = l / d;
                                break;
                            }
                        }
                        cout << "请输入分子和分母:";
                        cin >> r >> u;
                        if(r==k&&u==l)
                        {
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==1)
                    {    
                        cout << "(" << a1 << "/" << a2 << ")" << "-" << "(" << a3 << "/" << a4 << ")" << "=" << endl;
                        k = (a1 * a4) - (a2 * a3);
                        l = a2 * a4;
                        int small;
                        if(k-l>0)
                        {
                            small = l;
                        }
                        else
                        {
                            small = k;
                        }
                        for(int d=small;d>0;d--)
                        {
                            if(k%d==0&&l%d==0)
                            {
                                k = k / d;
                                l = l / d;
                                break;
                            }
                        }
                        cout << "请输入分子和分母(负数写在分子里):";
                        cin >> r >> u;
                        if(r==k&&u==l)
                        {
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==2)
                    {    
                        cout << "(" << a1 << "/" << a2 << ")" << "*" << "(" << a3 << "/" << a4 << ")" << "=" << endl;
                        k = a1 * a3;
                        l = a2 * a4;
                        int small;
                        if(k-l>0)
                        {
                            small = l;
                        }
                        else
                        {
                            small = k;
                        }
                        for(int d=small;d>0;d--)
                        {
                            if(k%d==0&&l%d==0)
                            {
                                k = k / d;
                                l = l / d;
                                break;
                            }
                        }
                        cout << "请输入分子和分母:";
                        cin >> r >> u;
                        if(r==k&&u==l)
                        {
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                    else if(y==3)
                    {    
                        cout << "(" << a1 << "/" << a2 << ")" << "/" << "(" << a3 << "/" << a4 << ")" << "=" << endl;
                        k = a1 * a4;
                        l = a2 * a3;
                        int small;
                        if(k-l>0)
                        {
                            small = l;
                        }
                        else
                        {
                            small = k;
                        }
                        for(int d=small;d>0;d--)
                        {
                            if(k%d==0&&l%d==0)
                            {
                                k = k / d;
                                l = l / d;
                                break;
                            }
                        }
                        cout << "请输入分子和分母:";
                        cin >> r >> u;
                        if(r==k&&u==l)
                        {
                            cout << "正确!" << endl;
                            zq++;
                        }
                        else
                        {
                            cout << "错误!" << endl;
                            cw++;
                        }
                    }
                }
            }    
            i++;
        }
    
        cout << "多项式运算除法只取整数部分!!!" << endl;
        int j = 0;
        while(j<10)
        {
            int h,c,f;
            h = rand() % 5 + 2;
            int g = h;
            int s1[6];
            string s2[6];
            for(int l=0;l<h;l++)
            {
                s1[l] = rand() % (ia3-ii3+1) + ii3;
            }
            for(int l=0;l<h-1;l++)
            {
                c = rand() % 4;
                if(c==0)
                {
                    s2[l] = "+";
                }
                else if(c==1)
                {
                    s2[l] = "-";
                }
                else if(c==2)
                {
                    s2[l] = "*";
                }
                else if(c==3)
                {
                    s2[l] = "/";
                }
            }
            s2[h-1] = "=";
            for(int l=0;l<h;l++)
            {
                cout << s1[l] << s2[l];
            }
            cout << endl;
    
            for(int l=0;l<h;l++)
            {
                if(s2[l]=="*"||s2[l]=="/")
                {    
                    if(s2[l]=="*")
                    {
                        s1[l] = s1[l] * s1[l+1];
                        for(int k=l+1;k<h-1;k++)
                        {
                            s1[k] = s1[k+1];
                        }
                        for(int k=l;k<h-1;k++)
                        {
                            s2[k] = s2[k+1];
                        }
                        l--;
                        h--;
                        g--;
                    }
                    else if(s2[l]=="/")
                    {
                        s1[l] = s1[l] / s1[l+1];
                        for(int k=l+1;k<h-1;k++)
                        {
                            s1[k] = s1[k+1];
                        }
                        for(int k=l;k<h-1;k++)
                        {
                            s2[k] = s2[k+1];
                        }
                        l--;
                        h--;
                        g--;
                    }
                }
            }
    
            for(int l=0;l<g;l++)
            {
                if(s2[l]=="+"||s2[l]=="-")    
                {    
                    if(s2[l]=="+")
                    {
                        s1[l] = s1[l] + s1[l+1];
                        for(int k=l+1;k<g-1;k++)
                        {
                            s1[k] = s1[k+1];
                        }
                        for(int k=l;k<g-1;k++)
                        {
                            s2[k] = s2[k+1];
                        }
                        l--;
                        g--;
                    }
                    else if(s2[l]=="-")
                    {
                        s1[l] = s1[l] - s1[l+1];
                        for(int k=l+1;k<g-1;k++)
                        {
                            s1[k] = s1[k+1];
                        }
                        for(int k=l;k<g-1;k++)
                        {
                            s2[k] = s2[k+1];
                        }
                        l--;
                        g--;
                    }
                }
            }
            cout << "请输入运算结果:";
            cin >> f;
            if(f==s1[0])
            {
                cout << "正确!" << endl;
                zq++;
            }
            else
            {
                cout << "错误!" << endl;
                cw++;
            }
    
            j++;
        }
    
        cout << "一共做对" << zq << "道题!" << endl;
        cout << "一共做错" << cw << "道题!" << endl;
    
        return 0;
    }

    结果截图:

    项目计划总结:

    日期 听课 编写程序 阅读课本 日总计
    周日        
    周一 100min   60min 160min
    周二        
    周三     60min 60min
    周四   90min   90min
    周五     60min 60min
    周六   400min   400min
    周总记 100min 490min 180min 770min

    时间记录日志:

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3/21 8:00 9:50 10min 100min 上课  
      13:00 14:00   60min 编程 优化上一次实验的一些部分使之能与这次实验结合
    3/23 15:00 16:20 20min 60min 讨论  
    3/24 15:00 16:30   90min 编程 尝试讨论内容
    3/25 19:00 20:00   60min 讨论  
    3/26 10:00 19:00 140min 400min 编程 编写程序和修改错误

    缺陷记录日志:

    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3/26 1 100 编码 编译 60min  
    描述:因复制粘贴而重复的地方就出现有些地方修改了而有些地方没有改。

    合作人:徐嵩盛

    合作照片:

  • 相关阅读:
    集合类小结
    Java相关文章
    centos下同时启动多个tomcat
    express发送get或post请求
    node.js的querystring模块
    node.js的url解析和生成
    node.js判断是否文件夹和文件
    node.js删除文件
    node.js对文件夹增删改查的操作
    node运行js文件热更新
  • 原文地址:https://www.cnblogs.com/wxyxxx/p/5323851.html
Copyright © 2011-2022 走看看