软件工程个人作业03

Posted waitingforyou123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程个人作业03相关的知识,希望对你有一定的参考价值。

设计思路:

定义两个数组number[1000],oper[1000]分存储数字和运算符,利用随机数函数随机的为numberoper数组分配整数和运算符

Int Puanduan()用来判断计算结果是否正确,正确返回1,错误返回0

利用for循环找到除号首先进行运算把结果保存到与字符序号相同的numberi】数组中并把poeri】变为加号,把number[i+1]变为0;最后从左到右算一遍加减运算

 

//四则运算

//李营;201429302016/3/21

#include "size.h"

 

void main()

{

    size A;

    P:

    int n;

    cout<<"请选择模式:1答题模式;2混合运算答题模式"<<endl;

    cin>>n;

    int N;

    if(n==2)

    {

        cout<<"请输入混合运算数的个数:"<<endl;

        cin>>N;

    }

    switch(n)

    {   

        case 1:

        {

            A.CeShi();

        }

        case 2:

        {

            A.CeShi2(N);

        }

    }

    goto P;

}

 

.h文件

#pragma once

#include<iostream>

#include<string>

 

using namespace std;

class size

{

public:

    size(void);

    ~size(void);

    void CeShi();//一般运算函数

    void CeShi2(int N);//混合运算函数

    char Operator();//运算符发生函数

    int PanDuan(int d,int a,int b,char o);//d:传递用户输入的答案;a,b:传递参与运算的数字;o:传递运算符

    int PanDuan2(int d,int N,int number[1000],char oper[1000]);//d:传递用户输入的答案;N:传递用户所选混合运算的整数个数

};

 

.cpp文件

#include "size.h"

 

size::size(void)

{

}

size::~size(void)

{

}

void size::CeShi()//测试模式(只能2个数进行运算)

{

    int n=0;//用来计算作对数目

    for(int i=0;i<30;i++)

    {

        int D;//储存用户答案

        int a=rand()%100;

        int b=rand()%100;

        if(b==0)

        {

            i--;

        }

        else

        {

            if(a%b!=0)

            {

                i--;

            }

            else

            {

                char o;//存储运算符

                o=Operator();

                cout<<a<<o<<b<<"=?";

                cin>>D;

                n=n+PanDuan(D,a,b,o);

            }

         }

    }

    cout<<"您答对了"<<n<<"道题目!"<<endl;

}

char size::Operator()//随机产生运算符

{

    char c;//存储运算符

    int r;

    r=rand()%4;

    if(r==0)

    {

        c=‘+‘;

    }

    else if(r==1)

    {

        c=‘-‘;

    }

    else if(r==2)

    {

        c=‘*‘;

    }

    else

    {

        c=‘/‘;

    }

    return c;

}

int size::PanDuan(int d,int a,int b,char o)//判断结果是否正确

{

    int n=0;//用来返回用户答案是否正确如正确返回1,错误返回0

    if(o==‘+‘)

    {

        if(d==(a+b))

        {

            cout<<"正确!";

            n=1;

         }

        else

        {

            cout<<"错误!";

        }

     }

     else if(o==‘-‘)

     {

        if(d==(a-b))

        {

            cout<<"正确!";

            n=1;

         }

        else

        {

            cout<<"错误!";

        }

     }

     else if(o==‘*‘)

     {

        if(d==(a*b))

        {

            cout<<"正确!";

            n=1;

         }

        else

        {

            cout<<"错误!";

        }

     }

     else if(o==‘/‘)

     {

        if(d==(a/b))

        {

            cout<<"正确!";

            n=1;

         }

        else

        {

            cout<<"错误!";

        }

     }

   cout<<endl;

   return n;

}

int size::PanDuan2(int d,int N,int number[1000],char oper[1000])//判断混合运算用户单是否正确

{

        int n=0;//用来返回用户答案是否正确如正确返回1,错误返回0

        for(int i=0;i<N;i++)

        {

            if(oper[i]==‘/‘)

            {  

               number[i+1]=(number[i])/(number[i+1]);

               oper[i]=‘+‘;

               number[i]=0;

            }

        }

        for(int i=0;i<N;i++)

        {

            if(oper[i]==‘*‘)

            {  

               number[i+1]=(number[i])*(number[i+1]);

               oper[i]=‘+‘;

               number[i]=0;

            }

        }

        int sum=number[0];

        for(int i=0;i<(N-1);i++)

        {

            if(oper[i]==‘+‘)

            {  

               sum=sum+number[i+1];

            }

            else

            {

               sum=sum-number[i+1];

            }

        }

        if(d==sum)

        {

            n=1;

            cout<<"正确!";

        }

        else

        {

            cout<<"错误!";

        }

        cout<<endl;

        return n;

}

void size::CeShi2(int N)//实现混合运算式的输出

{

    int n=0;//用来计算作对数目

    for(int i=0;i<30;i++)//循环生成30道题目

    {

        int N1=N-1;//运算符个数

        char oper[1000];//用来存储运算符

        int number[1000];//用来存储参与运算的随机数

        for(int i=0;i<N;i++)//对参与运算的数依次赋值

        {

            number[i]=(rand()%100);

        }

         for(int i=0;i<N-1;i++)//对参与运算的运算符依次赋值

        {

            oper[i]=Operator();

        }

        oper[N-1]=‘=‘;

        for(int i=0;i<N;i++)//输出每一个混合运算式

        {

            int m;

            if(((oper[i]==‘/‘)&&(oper[i-1]!=‘/‘))||((oper[i]==‘/‘)&&(oper[i-1]==‘/‘)&&(oper[i-2]==‘/‘)))

            //解决连续除号的如何加括号

            {

                cout<<"(";

                m=i;        

            }

            cout<<number[i];

            if(i==(m+1)&&oper[m]==‘/‘)//后括号的输出

            {

                cout<<")";

            }

            cout<<oper[i];

        }

        cout<<"?"<<endl;

        int D;//用来存储用户输入的答案

        cin>>D;

        n=n+PanDuan2(D,N,number,oper);

    }

    cout<<"您答对了"<<n<<"道题目"<<endl;

}

程序截图:

 

                                            周活动总结表

                                  姓名:李营                                                日期:2016/3/26

 

日期

任务

听课(min

编写程序(min

 

阅读课本

 

准备考试

整理并发布作业

 

日总计(min

周日

 

 

 

 

 

 

 

周一

100

120

 

 

 

 

220

周二

 

 

 

 

 

 

 

周三

 

150

 

 

 

 

150

周四

 

 

 

 

 

 

 

周五

 

 

60

 

 

 

60

周六

 

 

 

 

120

 

120

周总计

100

270

 

 

 

 

450

 

 

                                          阶段时间和效率:

                          不包括本周的累计时间:

总计

100

270

120

 

 

 

390

平均

100

270

120

 

 

 

390

最大

100

270

120

 

 

 

390

最小

100

270

120

 

 

 

390

                          全部周的累积时间:

总计

200

540

180

 

120

 

840

平均

100

270

90

 

120

 

420

最大

100

270

120

 

120

 

450

最小

100

270

60

 

120

 

390

 

 

 

                                          时间记录日志

                              学生:李营                      日程:20016/3/19

                              教师:王建民                                          课程;软件工程概论

 

日期

 

开始时间

 

结束时间

 

中断时间

 

净时间

 

活动

 

备注

3/21

8:00

9:50

10

100

听课

王老师讲课

 

1430

16:50

20

120

编写程序(二柱子)

,打水,聊天

作业

3/23

14:00

16:40

10

150

编写程序(利用数组解决了就安吉算出答案的问题,打水

作业

3/25

14:00

15:00

 

120

阅读大道至简

作业

3/26

9:30

11:30

 

120

编写程序(对程序稍加完善),整理提交作业

作业

 

                                          缺陷记录日志

                              学生:李营

                              日期:2016/3/26

                              教员:王建民

                              程序号:2

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 

3/21

1

a

编码

编码

1min

 

注释时多注释了一个“}

 

2

b

编译运行

编译运行

1min

 

 

不能正确的输出答案

 

3/23

3

c

编码

编码

1min

 

忘记了关闭上一次的运行窗口造成程序报错为找不到保存路径

以上是关于软件工程个人作业03的主要内容,如果未能解决你的问题,请参考以下文章

软件工程个人作业03

软件工程个人作业03

软件工程个人作业03

软件工程个人作业03

软件工程个人作业03

软件工程个人作业03