软件工程概论第二周综合测验

1,设计思路和实际偏差总结。

   设计思路如上一个博客,实际偏差有很多,首先,没能处理题目重复,打印方式和有括号的算法,其次是未能实行将这几个部分很好的融合在一起,而是单独实行各个方面的题目,主要是因为我认为这样比较方便而且各函数独立,清楚清晰。

2,具体程序中出现的错误,出现错误最常见的地方。

  程序出现错误一般都在标识符定义没有定义好,大括号{}不匹配,尤其是实现除法有余数的函数里,总是出现错误,语句顺序没有调整好,循环之类的,导致没法出结果。

  具体程序如下:

math.h

#pragma once
#include<cmath>
#include<iostream>
using namespace std;

class math
{
public:
    math(void);
    void chengchu();
    void kuohao();
    void fushu();
    void yushu();
    void xiaoshu();
    void jiajian();
    ~math(void);
};



math.cpp


#include "math.h"

math::math(void)
{
}

void math::chengchu()
{
    
    cout<<"有乘除的运算:"<<endl;
    int num,q;//定义题目数量num,数值范围q,打印方式的列数l。
    cout<<"请输入自定义题目数量:"<<endl;
    cin>>num;
    cout<<"请输入自定义数值范围:"<<endl;
    cin>>q;
    int a,b,i,y;    
    for(i=0;i<num;i++)
    {
        a=rand()%q;
        b=rand()%q;
        y=rand()%2;    
        switch(y){
            case 0:
                cout<<" "<<a<<"*"<<b<<"="<<endl;
                break;
            case 1:
                cout<<" "<<a<<"/"<<b<<"="<<endl;
                break;
        }

    }


}
void math::kuohao()
{
    cout<<"有括号的运算:"<<endl;
    cout<<"暂不支持该运算"<<endl;
}

void math::fushu()
{ 
    cout<<"有负数的运算:"<<endl;
    int num,q;//定义题目数量num,数值范围q,打印方式的列数l。
    cout<<"请输入自定义题目数量:"<<endl;
    cin>>num;
    cout<<"请输入自定义数值范围:"<<endl;
    cin>>q;
    int a,b,i,y;
    for(i=0;i<num;i++)
    {
        a=-rand()%q;
        b=-rand()%q;
        y=rand()%2;
        switch(y){
            case 0:
                cout<<" "<<a<<"+"<<"("<<b<<")"<<"="<<endl;
                break;
            case 1:
                cout<<" "<<a<<"-"<<"("<<b<<")"<<"="<<endl;
                break;
        }
    }

}

void math::yushu()
{
    cout<<"有余数的运算:"<<endl;
    int num,q;//定义题目数量num,数值范围q,打印方式的列数l。
    cout<<"请输入自定义题目数量:"<<endl;
    cin>>num;
    cout<<"请输入自定义数值范围:"<<endl;
    cin>>q;
    int a,b,i;
    for(i=0;i<num;i++)
    {
        a=rand()%q;
        b=rand()%q;
        if(b!=0&&a%b!=0)
            cout<<a<<"/"<<b<<"="<<endl;
    }


}

void math::xiaoshu()
{
    cout<<"有分数的运算:"<<endl;
    int num,q;//定义题目数量num,数值范围q,打印方式的列数l。
    cout<<"请输入自定义题目数量:"<<endl;
    cin>>num;
    cout<<"请输入自定义数值范围:"<<endl;
    cin>>q;
    int a,b,c,d,i,y;
    for(i=0;i<num;i++)
    {
        a=rand()%q;
        b=rand()%q;
        c=rand()%q;
        d=rand()%q;
        y=rand()%2;
        switch(y){
            case 0:
                if(b!=0&&d!=0)
                cout<<" "<<a<<"/"<<b<<"+"<<c<<"/"<<d<<"="<<endl;
                break;
            case 1:
                if(b!=0&&d!=0)
                cout<<" "<<a<<"/"<<b<<"+"<<c<<"/"<<d<<"="<<endl;
                break;
        }
    }

}
void math::jiajian()
{
    cout<<"仅加减的运算:"<<endl;
    int num,q;//定义题目数量num,数值范围q,打印方式的列数l。
    cout<<"请输入自定义题目数量:"<<endl;
    cin>>num;
    cout<<"请输入自定义数值范围:"<<endl;
    cin>>q;
    int a,b,i,r,y;
    for(i=0;i<num;i++)
    {
        a=rand()%q;
        b=rand()%q;
        y=rand()%2;
        switch(y){
            case 0:
                cout<<" "<<a<<"+"<<b<<"="<<endl;
                break;
            case 1:
                if(a<b)
                {
                    r=a;
                    a=b;
                    b=r;
                }//避免负数
                cout<<" "<<a<<"-"<<b<<"="<<endl;
                break;
        }
    }
}

math::~math(void)
{
}


main.cpp
#include"math.h"
#include<iostream>
using namespace std;

void main()
{
    int n;
    math k;
    do
    {
        cout<<"*******************************************"<<endl;
        cout<<"请选择下面的一个项目:"<<endl;        
        cout<<"1 有乘除法         2 有括号"<<endl;
        cout<<"3 加减有负数       4 除法有余数"<<endl;
        cout<<"5 支持分数         6 仅加减法"<<endl;
        cout<<"*******************************************"<<endl;
        cin>>n;
        switch(n)
        {
        case 1:k.chengchu();break;
        case 2:k.kuohao();break;
        case 3:k.fushu();break;
        case 4:k.yushu();break;
        case 5:k.xiaoshu();break;
        case 6:k.jiajian();break;
        }
    }while(n);
}

3,感悟。

一直觉得自己编程不好,看见四则运算2题目就发怵,于是就决定先简化,看自己能做到哪一步,实际上来讲,我的程序还是结构简单,语句冗长,不是一个很好的程序,我也会继续在它的基础上继续改进。只是根据四则运算1来写的这个程序,有的地方虽然不尽如人意。我觉得自己有在编程的路上还是进步了那么一小小点。

4,时间记录表。

 

posted @ 2015-03-19 16:01  so#what  Views(126)  Comments(0Edit  收藏  举报