您的位置:首页 > 其它

软件工程个人作业02

2016-03-19 17:27 330 查看
设计思想:

1.用户参数的设定

2.随机数的生成,包括运算符,运算数,和控制分数的数字

3.根据用户输入的参数,把四则运算分为两类,一类是不带括号的,一类是带括号的思则混合运算

4.不带括号的四则运算又可以分为有乘除和没有乘除法的

5.具体细节的设定,再加减法中结果是不是有负数,乘除法中有没有余数

6.分数中去掉分母为0的,分母为1的只需输出分子即可

7.带括号的四则混合运算,随机生成长度,和运算符存储在数组中,随机加上括号

8.利用for循环,生成四则运算

9.输出

源程序代码

#include<iostream>
using namespace std;
#include<time.h>

int gcd(int x,int y)
{
int t,m,n,k=1;
if(x>y)
{
t=x;x=y;y=t;
}
for(int i=x;i>=2;i--)
{
m=x%i;n=y%i;
if(m==0&&n==0)
{
k=i;break;
}
}
return k;
}
void main()
{
int number,ccselect,khselect,jjselect,ysselect,max;
cout<<"请输入生成题的数目";
cin>>number;
cout<<"请输入运算范围(1-?)";
cin>>max;
cout<<"请选择是有无括号(1/2)";
cin>>khselect;
if(khselect==2)
{
cout<<"请选择加减是否有负数(1/2)";
cin>>jjselect;
cout<<"请选择是否有乘除法(1/2)";/*控制是否有乘除*/
cin>>ccselect;
if(ccselect==1)
{
cout<<"请选择除法有无余数(1/2)";
cin>>ysselect;
}
}
cout<<endl;

for(int i=0;i<number;i++)
{
int fuhao=rand()%4;
int a1=rand()%max;
int a2=rand()%max+1;
int b1=rand()%max;
int b2=rand()%max+1;
int k=rand()%2;
if(k==0)
{
if(ccselect == 1)
{
if(fuhao==0) //加法运算
cout<<a1<<"+"<<b1<<"="<<endl;
if(fuhao==1)//减法运算
{
if(jjselect==2)
{
if(a1>b1)
{
cout<<a1<<"-"<<b1<<"="<<endl;
}
else
{
cout<<b1<<"-"<<a1<<"="<<endl;
}
}
else if(jjselect==1)
cout<<a1<<"-"<<b1<<"="<<endl;
}
if(fuhao==2)//乘法运算
{
cout<<a1<<"*"<<b1<<"="<<endl;
}
if(fuhao==3)//除法运算
{
if(ysselect==2)
{//没有余数
for(int m=0;;)
{
if(a1!=0)
{
if(a1%b1!=0)
{
a1=rand()%max;
b1=rand()%max;
}
else
break;
}
else
a1=rand()%max;
}
}
cout<<a1<<"/"<<b1<<"="<<endl;
}
}
else if(ccselect==2)
{//没有乘除
int fuhao=rand()%2;
if(fuhao==0) //加法运算
{
cout<<a1<<"+"<<b1<<"="<<endl;
}
if(fuhao==1)//减法运算
{
if(jjselect==2)
{
if(a1>b1)
{
cout<<a1<<"-"<<b1<<"="<<endl;
}
else
{
cout<<b1<<"-"<<a1<<"="<<endl;
}
}
else if(jjselect==1)
cout<<a1<<"-"<<b1<<"="<<endl;
}
}
}
else if(k==1)
{
int s2=gcd(a1,a2);
a1=a1/s2;
a2=a2/s2;
int s3=gcd(b1,b2);
b1=b1/s3;
b2=b2/s3;
if(ccselect == 1)
{
if(fuhao == 0)
{/*分母不为1,分情况输出*/
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " + " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" + " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " + " << b1 << " = " << endl;
}
}
if(fuhao == 1)
{
if(jjselect==2)
{
if(a1/a2>=b1/b2)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " - " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" - " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " - " << b1 << " = " << endl;
}
}
else
{
if(a2!=1&&b2!=1)
cout << b1 << "/" << b2 << " - " << a1 << "/" << a2 << " = " << endl;
else if(a2==1)
{
cout << b1 << "/" << b2 << " - " <<a1 << " = " << endl;
}
else if(b2==1)
{
cout << b1 <<" - " << a1 << "/" << a2 << " = " << endl;
}
}
}
else if(jjselect==1)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " + " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" + " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " + " << b1 << " = " << endl;
}
}
}
if(fuhao==2)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " * " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" * " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " * " << b1 << " = " << endl;
}
}
if(fuhao==3)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " - " << b1 << "/" << b2 << " = " << endl;
else if(a2==1&&a1!=0)
{
cout << a1 <<" * " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1&&b1!=0)
{
cout << a1 << "/" << a2 << " * " << b1 << " = " << endl;
}
}
}
else if(ccselect==2)
{
int fuhao=rand()%2;
if(fuhao==0)
{
if(fuhao==0)
{ /*分母不为1,分情况输出*/
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " + " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" + " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " + " << b1 << " = " << endl;}
}
}
if(fuhao == 1)
{
if(jjselect==2)
{
if(a1/a2>=b1/b2)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " - " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" - " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " - " << b1 << " = " << endl;
}
}
else
{
if(a2!=1&&b2!=1)
cout << b1 << "/" << b2 << " - " << a1 << "/" << a2 << " = " << endl;
else if(a2==1)
{
cout << b1 << "/" << b2 << " - " <<a1 << " = " << endl;
}
else if(b2==1)
{
cout << b1 <<" - " << a1 << "/" << a2 << " = " << endl;
}
}
}
else if(jjselect==1)
{
if(a2!=1&&b2!=1)
cout << a1 << "/" << a2 << " + " << b1 << "/" << b2 << " = " << endl;
else if(a2==1)
{
cout << a1 <<" + " << b1 << "/" << b2 << " = " << endl;
}
else if(b2==1)
{
cout << a1 << "/" << a2 << " + " << b1 << " = " << endl;
}
}
}
}
}
}
}


  运行结果截图:









反思:

最初的用结构体做的,但是这次增加了控制参数觉得分类不好分,所以直接定义变量,分类时候没考虑全,最后做出来的程序有很多bug,还有的功能没有完成带括号的混合运算还要接着做。

                                              周活动总结表

                                        姓名:hy 日期2016.3.19

日期/任务听课编写程序阅读课本日总计
星期日
星期一12080200
星期二4040
星期三
星期四6060
星期五
星期六16060220
周总计120280120520
                                              时间记录日志

                                 姓名:hy                 日期:2016.3.19

日期开始时间结束时间中断时间静时间活动备注 C U
3.148:009:508:50-9:00100上课
3:005:00120设计思想

+编程

作业
3.153:005:00120编程作业
3.173:304:3060看书作业
3.199:0018:0011:30-1:00450编程+

发表博客

作业
                                             缺陷记录日志

                                          学生:hy 日期:2016.3.19

                                          教员:王建民 程序号 03

日期编号类型引入阶段排除阶段修复时间修复缺陷
3.14120编程编程20
描述:创建结构体错误
3.15220编程编程10
描述:分数没有考虑分母为1的情况
3.19320编程编程10
描述:分数化简错误
420编程编译30
描述:题目出现两两成对重复出现出现
520编程编译20
描述:题目只有加减法时出现数量少一半
620编程编译10
描述:改完后程序卡死,循环错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: