四则运算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老师:王建民课程:PSP
3,缺陷记录日志:学生:孔宇航日期:2016/3/11老师:王建民
代码:
//四则运算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 | |||||||
任务日期 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计(分钟) | ||
周日 | |||||||
周一 | 100 | 60 | 60 | 220 | |||
周二 | 120 | 30 | 150 | ||||
周三 | 120 | 60 | 120 | ||||
周四 | 100 | 90 | 90 | 280 | |||
周五 | 300 | 30 | 330 | ||||
周六 | 120 | 120 |
阶段时间和效率周数:1 | |||||||
总计 | 200 | 810 | 270 | 1220 | |||
平均 | 30 | 115 | 40 | 174 | |||
最大 | 100 | 300 | 90 | 330 | |||
最小 | 100 | 60 | 30 | 120 |
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/7 | 14:00 | 16:00 | 20 | 100 | 上课 | |
17:00 | 18:00 | 60 | 编程 | |||
20:00 | 21:00 | 60 | 读课本 | |||
3/8 | 15:00 | 17:00 | 120 | 编程 | ||
18:00 | 19:00 | 60 | 查资料 | |||
21:00 | 21:30 | 30 | 读课本 | |||
3/9 | 10:00 | 12:00 | 20 | 100 | 查资料 | |
14:00 | 16:00 | 120 | 编程 | |||
17:00 | 18:00 | 60 | 写作业 | |||
20:30 | 21:30 | 60 | 读课本 | |||
3/10 | 14:00 | 16:00 | 20 | 100 | 上课 | |
16:00 | 18:00 | 30 | 90 | 编程 | ||
21:00 | 21:30 | 30 | 30 | 读课本 | ||
3/11 | 08:0013:3015:00 | 9:0015:0020:00 | 6090300 | 查资料休息编程 |
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复阶段 | 修复缺陷 |
3/10 | 1 | 01 | 编写 | 编译 | 2min | |
括号丢失 | ||||||
2 | 02 | 编写 | 编译 | 10min | ||
逻辑错误 | ||||||
3/11 | 3 | 02 | 编写 | 编译 | 20min | |
循环错误,计数有误 | ||||||
4 | 02 | 编写 | 编译 | 10min | ||
输出有误,语法错误 |
相关文章推荐
- PAT算法题学习笔记
- HackRF实现ADS-B飞机信号跟踪定位
- 插入排序法
- PyCharm5.04使用教程
- Linux 下SVN 命令行的使用
- 前缀异或:XOR Segment (用的是前缀和的思想,所以暂且称这个方法为前缀异或)
- 项目开发技巧
- 选择排序法
- lower_bound()和upper_bound()的简单讲解
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 搭建Hadoop2.7.2开发环境1(编译Eclipse中hadoop插件hadoop2x-eclipse-plugin)
- VIM
- 软件测试面试可能会遇到的一些问题
- ionic + 高德地图定位
- 第一次上机实验-2
- event 事件 clientX 和clientY 配合scrollTop使用, div跟着鼠标走
- 使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(六)表白页面
- day13—HTML DOM编程
- CodeForces - 598A Tricky Sum (快速幂)
- 关于java开发技巧