您的位置:首页 > 其它

四则运算2

2016-03-12 13:43 330 查看
四则运算2思路:1.用srand函数判断随机数输出是否重复2.输出的数量直接输入即可,打印方式每行固定输出几个,由用户输入为准。3.有无乘除:生成随机数c小于4,0为+,1为-,2为*,3为/,没有乘除就排除c为2.3情况有无负数:排除c为0.1时小于0情况有无余数:求余判断是否为0有无括号:括号的情况需要生成多个随机数,所以我决定生成个随机数组,括号的位置也随机插入到随机数后面,运算符也随机插入。4.设置循环,条件判断,输出时有负数带括号输出,没有直接输出。
代码:
//四则运算2
//孔宇航2016/3/11

#include<iostream>
#include<stdlib.h>
#include<time.h>
usingnamespacestd;

voidmain()
{
inta0[1000],b0[1000],c0[1000],a1[1000],b1[1000],c1[1000],a2[1000],b2[1000],c2[1000],a3[1000],b3[1000],c3[1000],C[1000];
inta,b,c,d;
inti,j,A0,A1,A2,A3,B0,B1,B2,B3;
intnum,line,k;
intmin,max,m;
intCC,FS,YS,KH;

k=0;
A0=0;A1=0;A2=0;A3=0;
B0=0;B1=0;B2=0;B3=0;
cout<<"*************四则运算2*************"<<endl;
cout<<endl;
cout<<endl;

cout<<"请输入算式数量和每行显示数量(打印方式):"<<endl;
cin>>num>>line;

cout<<"是否要有乘除法?(1/0)"<<endl;
cin>>CC;
while(1)//判断输入是否合法
{
if(CC!=1&&CC!=0)
{
cout<<"输入有误,请重新输入:";
cin>>CC;
}
else
break;
}

cout<<"加减有无负数?(1/0)"<<endl;
cin>>FS;
while(1)//判断输入是否合法
{
if(FS!=1&&FS!=0)
{
cout<<"输入有误,请重新输入:";
cin>>FS;
}
else
break;
}

cout<<"除法有无余数?(1/0)"<<endl;
cin>>YS;
while(1)//判断输入是否合法
{
if(YS!=1&&YS!=0)
{
cout<<"输入有误,请重新输入:";
cin>>YS;
}
else
break;
}

cout<<"是否有括号?(1/0)"<<endl;
cin>>KH;
while(1)//判断输入是否合法
{
if(KH!=1&&KH!=0)
{
cout<<"输入有误,请重新输入:";
cin>>KH;
}
else
break;
}

cout<<"请输入两个数数值范围min,max(min<max)"<<endl;
cin>>min>>max;
cout<<endl;
while(1)//判断输入是否合法
{
if(min>=max)
{
cout<<"输入有误,请重新输入:";
cin>>min>>max;
}
else
break;
}

m=max-min+1;
for(i=0;i<1000;i++)
{
a0[i]=0;b0[i]=0;
a1[i]=0;b1[i]=0;
a2[i]=0;b2[i]=0;
a3[i]=0;b3[i]=0;
}
srand((unsigned)time(NULL));//srand()函数产生一个以当前时间开始的随机种子
for(i=0;;i++)
{
a=min+rand()%m;
b=min+rand()%m;
d=min+rand()%m;
c=rand()%4;

if(CC==0)//如果CC=0,去除c=2,3的情况
{
if(c==2||c==3)
continue;

}
if(FS==0)//如果FS=0,去除c=0,1下结果小于0的情况
{
if(c==0)
{
if(a+b<0)
continue;
}
elseif(c==1)
{
if(a-b<0)
continue;
}
}
if(YS==0)//如果YS=0,且是除法,去除a,b相除有余数的情况
{
if(c==3)
if(0!=a%b)
continue;
}

//将算式分为加、减、乘、除
if(c==0)//加法
{
for(j=0;j<=A0;j++)
{
if(a==a0[j]&&b==b0[j])
{
B0++;break;
}
}
if(B0>0)
{
B0=0;continue;
}
else
{
a0[A0]=a;
b0[A0]=b;
c0[A0]=a+b;
A0++;
}
}
elseif(c==1)//减法
{
for(j=0;j<=A1;j++)
{
if(a==a1[j]&&b==b1[j])
{
B1++;break;
}
}
if(B1>0)
{
B1=0;continue;
}
else
{
a1[A1]=a;
b1[A1]=b;
c1[A1]=a+b;
A1++;
}
}
elseif(c==2)//乘法
{
for(j=0;j<=A2;j++)
{
if(a==a2[j]&&b==b2[j])
{
B2++;break;
}
}
if(B2>0)
{
B2=0;continue;
}
else
{
a2[A2]=a;
b2[A2]=b;
c2[A2]=a+b;
A2++;
}
}
else//除法
{
if(b==0)
continue;
for(j=0;j<=A3;j++)
{
if(a==a3[j]&&b==b3[j])
{
B3++;break;
}
}
if(B3>0)
{
B3=0;continue;
}
else
{
a3[A3]=a;
b3[A3]=b;
c3[A3]=a+b;
A3++;
}
}
if(num==A0+A1+A2+A3)//限制算式数量
break;
}

//输出
for(i=0;i<A0;i++)//加法
{
k++;
if(a0[i]<0)
cout<<"("<<a0[i]<<")";
else
cout<<a0[i]<<"";
cout<<"+";
if(b0[i]<0)
cout<<"("<<b0[i]<<")";
else
cout<<""<<b0[i]<<"";
cout<<"=";
if(k%line==0)
cout<<endl;
else
cout<<"\t";
}
for(i=0;i<A1;i++)//减法
{
k++;
if(a1[i]<0)
cout<<"("<<a1[i]<<")";
else
cout<<a1[i]<<"";
cout<<"-";
if(b1[i]<0)
cout<<"("<<b1[i]<<")";
else
cout<<""<<b1[i]<<"";
cout<<"=";
if(k%line==0)
cout<<endl;
else
cout<<"\t";
}
for(i=0;i<A2;i++)//乘法
{
k++;
if(a2[i]<0)
cout<<"("<<a2[i]<<")";
else
cout<<a2[i]<<"";
cout<<"*";
if(b2[i]<0)
cout<<"("<<b2[i]<<")";
else
cout<<""<<b2[i]<<"";
cout<<"=";
if(k%line==0)
cout<<endl;
else
cout<<"\t";
}
for(i=0;i<A3;i++)//除法
{
k++;
if(a3[i]<0)
cout<<"("<<a3[i]<<")";
else
cout<<a3[i]<<"";
cout<<"/";
if(b3[i]<0)
cout<<"("<<b3[i]<<")";
else
cout<<""<<b3[i]<<"";
cout<<"=";
if(k%line==0)
cout<<endl;
else
cout<<"\t";
}
}
截图:



本次程序用了大量的时间,包括在网上查阅相关资料,复习以前知识,敲代码。括号部分只有了初步想法并没有实现此功能深感抱歉,本人编程能力有限,望老师谅解,会在以后的时间里好好学习,过后看看别的同学的学会这部分知识。除了括号的部分,其他功能还算完善,期间遇到些括号找不到错误的问题,由于没有按照代码规范要求编写,下次注意。还有些输出问题,负数加括号问题,输出个数不符合输入的要求,因为没有记录加减乘除的和没有计数和要求数做对比。一次次修改也算是完成了。
项目计划总结周活动总结表姓名:孔宇航日期:2016/3/11
任务日期听课编写程序阅读课本准备考试日总计(分钟)
周日
周一1006060220
周二12030150
周三12060120
周四1009090280
周五30030330
周六120120
阶段时间和效率周数:1
总计2008102701220
平均3011540174
最大10030090330
最小1006030120
2,时间记录日志:
学生:孔宇航日期:2016/3/11
老师:王建民课程:PSP
日期开始时间结束时间中断时间净时间活动备注
3/714:0016:0020100上课
17:0018:0060编程
20:0021:0060读课本
3/815:0017:00120编程
18:0019:0060查资料
21:0021:3030读课本
3/910:0012:0020100查资料
14:0016:00120编程
17:0018:0060写作业
20:3021:3060读课本
3/1014:0016:0020100上课
16:0018:003090编程
21:0021:303030读课本
3/1108:0013:3015:009:0015:0020:006090300查资料休息编程
3,缺陷记录日志:
学生:孔宇航日期:2016/3/11
老师:王建民
日期编号类型引入阶段排除阶段修复阶段修复缺陷
3/10101编写编译2min
括号丢失
202编写编译10min
逻辑错误
3/11302编写编译20min
循环错误,计数有误
402编写编译10min
输出有误,语法错误

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: