软件工程个人作业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  
描述:因复制粘贴而重复的地方就出现有些地方修改了而有些地方没有改。

合作人:徐嵩盛

合作照片:

原文地址:https://www.cnblogs.com/wxyxxx/p/5323851.html