软件工程个人作业03

---恢复内容开始---

一.设计思路

1.输入一个数控制题目个数

2.输入一个数控制取值范围(小于100

3.输入一个数控制是否有正负数

4.输入一个数控制是否有余数

5.输入一个数控制是否有乘除法

6.输入一个数控制是否有括号

7.生成一个随机数,控制每道题的参数个数

8.在一个for循环里,生成随机数,如果生成的随机数大于输入的取值,则重新输入,否则进行下一步

9.用if语句分模块,分别判断是否有正负号,余数,乘除法,括号的情况

10.If是有负数的情况,要考虑生成的运算符是减号的情况,这种情况下,要变成加号,同时负号去掉

11.生成随机数(0-3),用于控制运算符,当运算符是除号时,要考虑除法有无余数,并记录除号的位置

12.If语句执行有乘除法的情况,并计算

13.If语句执行只有有加减法的情况,并计算

14.有括号的情况,如果只生成两个数,自动不加括号,若多个参数,则对符号位置设置随机数,进行括号位置的确定

15.计算时,有括号先计算括号里面的*/,在计算+-,然后计算括号外面的,还是先*/,在+-

16.计算式输出后,输入结果,精确到整数,不足1不进位

17.输入的结果与计算机储存的结果比较,如果相等,则正确,正确计数器+1,若错误,则错误计数器+1

18.For循环用户输入的次数

.源代码:

  1 #include<iostream>
  2 #include<ctime>
  3 #include<cstdlib>
  4 using namespace std;
  5 void main()
  6 {
  7     int num;  //输入题目个数
  8     int rnum;  //输入取值范围
  9     int zfnum;  //输入是否有正负数
 10     int ys;  //输入是否有余数
 11     int fhn;  //输入是否有乘除法
 12     int kh;   //输入是否有括号
 13     cout<<"请输入题目个数:"<<endl;  //输入提示
 14     cin>>num;      //输入题目个数
 15     cout<<"请输入取值范围:(小于100)"<<endl;  //输入提示
 16     cin>>rnum;  //输入取值范围
 17     cout<<"请输入是否有正负数:(1.有 2.没有)"<<endl;  //输入提示
 18     cin>>zfnum;  //输入是否有正负数
 19     cout<<"除法是否有余数:(3.有 4.没有)"<<endl;  //输入提示
 20     cin>>ys;  //输入是否有余数
 21     cout<<"请输入是否有乘除法:(5.有 6.没有)"<<endl;  //输入提示
 22     cin>>fhn;  //输入是否有乘除法
 23     cout<<"请输入是否有括号:(7.有 8.没有)"<<endl;  //输入提示
 24     cin>>kh;  //输入是否有括号
 25     int sz[10];
 26     int jg,zhjg;
 27     int n1=0;
 28     int n2=0;
 29     int f=0;    //正负数的数字表示
 30     int fhnum=0;    //运算符号的数字表示
 31     char zf[10]={'+'};    //正负数的符号表示
 32     char fh[10];    //运算符号的符号表示
 33     int jl;   //记录除法的位置
 34     int kh1;   //记录括号的位置
 35     srand(time(0));
 36     for(int l=0;l<num;l++)
 37     {
 38         int sznum=rand()%9+2;   //每道题的数字个数 2-10
 39         for(int i=0;i<=sznum;i++)   //生成数字
 40         {
 41             sz[i]=rand()%100+1;    
 42             for(;;)      //控制数的范围
 43             {
 44                 if(sz[i]>rnum)
 45                     sz[i]=rand()%100+1;
 46                 else
 47                     break;
 48             }
 49             if(zfnum==1)  //计算有负数
 50                 f=rand()%2;
 51             if(f==1)     //负数
 52                 zf[i]='-';
 53             if(zf[i]=='-')
 54                 sz[i]=sz[i]*(-1);
 55         }
 56         for(int i=0;i<sznum;i++)    //生成运算符号
 57         {
 58             if(fhn==5)   //计算有乘除法
 59             {
 60                 fhnum=rand()%4;
 61                 if(fhnum==0)
 62                     fh[i]='+';
 63                 if(fhnum==1)
 64                     fh[i]='-';
 65                 if(fhnum==2)
 66                     fh[i]='*';
 67                 if(fhnum==3)
 68                 {
 69                     fh[i]='/';
 70                     if(ys==3)   //计算除法时有余数
 71                     {
 72                         jl=i;   //确定除法符号的位置
 73                         for(;;)
 74                         {
 75                             if(sz[i]%sz[i+1]!=0)
 76                                 break;
 77                             else 
 78                             {
 79                                 sz[i]=rand()%100+1;
 80                                 sz[i+1]=rand()%100+1;
 81                             }
 82                         }
 83                     }
 84                     if(ys==4)     //计算除法时没有余数
 85                     {
 86                         jl=i;   //确定除法符号的位置
 87                         for(;;)
 88                         {
 89                             if(sz[i]%sz[i+1]!=0)
 90                             {
 91                                 sz[i]=rand()%100+1;
 92                                 sz[i+1]=rand()%100+1;
 93                             }
 94                             else 
 95                                 break;
 96                         }
 97                     }
 98                 }
 99             }
100             if(fhn==6)   //计算无乘除法
101             {
102                 fhnum=rand()%2;
103                 if(fhnum==0)
104                     fh[i]='+';
105                 if(fhnum==1)
106                     fh[i]='-';
107             }
108         }
109         cout<<l+1<<": "<<sz[0];
110         if(sznum==2)   //如果一个题只有2个数字时不加括号
111             kh=8;
112         if(kh==7)  //有括号时
113         {
114             kh1=rand()%(sznum-2)+1;    //对符号位置设置随机数,进行括号位置的确定
115             for(int i=0;i<kh1-1;i++)
116             {
117                 cout<<fh[i]<<sz[i+1];
118             }
119             cout<<fh[kh1-1]<<"("<<sz[kh1]<<fh[kh1]<<sz[kh1+1]<<")";
120             for(int i=kh1+1;i<sznum;i++)
121             {
122                 cout<<fh[i]<<sz[i+1];
123             }
124             jg=sz[0];
125             //计算括号里的结果
126             if(fh[kh1]=='+')
127             {
128                 sz[kh1]=sz[kh1]+sz[kh1+1];
129                 sz[kh1+1]=0;
130             }
131             if(fh[kh1]=='-')
132             {
133                 sz[kh1]=sz[kh1]-sz[kh1+1];
134                 sz[kh1+1]=0;
135             }
136             if(fh[kh1]=='*')
137             {
138                 sz[kh1]=sz[kh1]*sz[kh1+1];
139                 sz[kh1+1]=1;
140             }
141             if(fh[kh1]=='/')
142             {
143                 sz[kh1]=sz[kh1]/sz[kh1+1];
144                 sz[kh1+1]=1;
145             }
146             //先算*/
147             for(int i=0;i<sznum;i++)
148             {
149                 if(fh[i]=='*')
150                 {
151                     sz[i]=sz[i]*sz[i+1];
152                     sz[i+1]=1;
153                 }
154                 if(fh[i]=='/')
155                 {
156                     sz[i]=sz[i]/sz[i+1];
157                     sz[i+1]=1;
158                 }
159             }
160             //最后+ -
161             for(int i=0;i<sznum;i++)
162             {
163                 if(fh[i]=='+')
164                     jg=jg+sz[i+1];
165                 if(fh[i]=='-')
166                     jg=jg-sz[i+1];
167                 if(fh[i]=='*')
168                     jg=jg*sz[i+1];
169                 if(fh[i]=='/')
170                     jg=jg/sz[i+1];
171             }
172         }
173         if(kh==8)    //没有括号时
174         {
175             for(int i=1;i<sznum;i++)
176             {
177                 cout<<fh[i]<<sz[i+1];
178             }
179             jg=sz[0];
180             for(int i=0;i<sznum;i++)
181             {
182                 if(fh[i]=='*')
183                 {
184                     sz[i]=sz[i]*sz[i+1];
185                     sz[i+1]=1;
186                 }
187                 if(fh[i]=='/')
188                 {
189                     sz[i]=sz[i]/sz[i+1];
190                     sz[i+1]=1;
191                 }
192             }
193             for(int i=0;i<sznum;i++)
194             {
195                 if(fh[i]=='+')
196                     jg=jg+sz[i+1];
197                 if(fh[i]=='-')
198                     jg=jg-sz[i+1];
199                 if(fh[i]=='*')
200                     jg=jg*sz[i+1];
201                 if(fh[i]=='/')
202                     jg=jg/sz[i+1];
203             }
204         }
205         cout<<"="<<endl;
206         cout<<"请输入结果,精确到整数,不足1不进位:"<<endl;
207         cin>>zhjg;
208         if(zhjg-jg<0.001)
209         {
210             n1++;
211             cout<<"正确!"<<endl;
212         }
213         else
214         {
215             n2++;
216             cout<<"错误!"<<endl;
217         }
218     }
219     cout<<"正确的个数:"<<n1<<",错误的个数:"<<n2<<endl;
220 }

.运行结果截图

 

四.按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志

                                                          周活动总结表

        姓名:谷伟华                            日期 2016/3/25

听课

编写代码

阅读课本

准备考试

其他

日总计

周日

周一

100

90

30

220

周二

35

35

周三

60

20

80

周四

80

40

120

周五

130

120

250

周六

90

90

周总计

100

360

90

245

795

                              时间记录日志

          学生:谷伟华                    日期:2016/3/25

          教师:王建民                    课程:软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

3/21

8:00

9:50

10

100

听课

15:00

17:20

20

120

写课堂作业和《构建之法》阅读笔记

上厕所、休息

3/22

15:25

16:00

0

35

讨论作业思路

3/23

17:20

18:10

0

50

编写程序、看《构建之法》

3/17

9:00

11:30

30

120

编写程序、看《构建之法》

上厕所、休息

3/18

16:30

18:30

20

100

编写程序

上厕所、准备上课

21:00

23:30

150

编写程序、写博客园要发表的东西

3/19

18:00

19:30

90

写博客园要发表的东西

缺陷记录日志示例

学生:牛俊燕

日期:3/26/2016

教员:王建民老师

程序号:45         

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3/21

1

7

编码

编译

2min

描述:MAX没有初始化

2

23

编码

编译

5min

描述:创建数组有错误,通过new创建数组

3

40

编码

编译

20min

描述:try......catch......finally语句的处理

3/22

4

54

编码

编译

30min

描述:当随机生成数是负数时,且运算符是减号,要将运算符变成加号,且随机生成数不带负号,运行时出不来想要的结果

3/23

5

72

设计

编译

50min

描述:有乘除时,在除法有余数时,没有考虑记录除法符号的位置

6

114

编码

编译

20min

描述:对符号位置设置随机数,进行括号位置的确定有错误

3/25

7

208

编码

编译

15min

描述:cin输入的名称有问题

.一起合作的照片

 

---恢复内容结束---

原文地址:https://www.cnblogs.com/gzgz/p/5322696.html