第二次作业 熟悉使用工具

一博客

GIT地址 https://github.com/GAKKI-WLP
GIT用户名 GAKKI WLP
学号后五位 61119
博客地址 https://www.cnblogs.com/gakkiwlp/
作业链接 https://www.cnblogs.com/harry240/p/11515697.html
参考文献 https://zhidao.baidu.com/question/2208716573212336268.html

二 作业完成

1.环境配置过程

a.个人采用的是vs2019,由于之前已经安装过了且过程简单,便不在细述

b.由于git步骤繁琐且使用不便,个人采用的是GitHub Desktop

步骤如下;

 

 在此页面上复制地址

 

 在这里将复制的粘贴上,并自己选择合适的位置。

2.代码思路

前言:在第一次看见题目要求是感觉比较简单便采用 code and fix 模式

方法: code and fix

a.算式的产生;

x 运算符 y 运算符 z=

x,y,z 采用rand函数 rand%100 随机产生 0-100的三个整数

运算用j,k来代表 同样采用1+rand%4 随机产生1,2,3,4分别代表加减乘除;

 1 int x, y, z;//三个0-100的随机数
 2     int j, k;//jk来产生1,2,3,3,4的两个随机数,其中 1代表加 2代表减 3为除 4为乘 m为第一个运算符,n为第二个运算符
 3     int b,h;//用于检验是否除法中存在小数的情况的辅助变量
 4     double o,p;//用于检验是否除法中存在小数的情况
 5     for (a = 0; a < n; a++)
 6     {
 7         x = rand() % 100;
 8         y = rand() % 100;
 9         z = rand() % 100;// 随机产生三个0-100的整数
10         j = 1 + rand() % 4;
11         k = 1 + rand() % 4;// 随机产生 1,2,3,4来模拟加减        

 

b.对于不同情况出现的问题

由于采用的code and fix模式,对于预估的问题没有充分考虑

Q1 字符 #define char op1 *;这样的宏定义op1 只是代表*,并不能当做运算符进行使用。

而且目标结果的情况并不复杂4*4=16 且代码重复率很高。便采用了if(j= &&k= )的方式进行讨论

代码效果如下:

Q2 除法不出现小数字 减法不出现负数

方法如下:eg先减后除的情况

 1     else if (j == 2 && k == 4)
 2         {
 3             if (z != 0)//排除分母为0的情况
 4             {
 5                 b = y / z;
 6                 o = (double)y / z;
 7                 if (b == o && x - y / z > 0)
 8                 {
 9                     cout << x << "-" << y << "/" << z << "=" <<  endl;
10                     subject << x << "-" << y << "/" << z << "=" << x - y / z << endl;//记录到subjecttxt文件中
11 
12                 }
13                 else
14                     n = n + 1;
15             }
16             else
17                 n = n + 1;
18 
19         }//先减后除

Q3 如何导出txt文件

参考文献:https://zhidao.baidu.com/question/2208716573212336268.html

方法;在建立函数时时也创建一个文件

在输出时记录

头文件 #include<fstream>

 

 

 

 

 

 

 

 

运行代码结果:

 

 

 

 代码源码:

  1 // GAKKI WLP‘s Calculator.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
  2 //
  3 
  4 #include <iostream>
  5 #include <fstream>
  6 using namespace std;
  7 
  8 
  9 void calutaor(int n, ofstream& subject)// 随机出现n个三个 0-100的加减法算数 函数
 10 {
 11     int a = 0;
 12     int x, y, z;//三个0-100的随机数
 13     int j, k;//jk来产生1,2,3,3,4的两个随机数,其中 1代表加 2代表减 3为除 4为乘 m为第一个运算符,n为第二个运算符
 14     int b,h;//用于检验是否除法中存在小数的情况的辅助变量
 15     double o,p;//用于检验是否除法中存在小数的情况
 16     for (a = 0; a < n; a++)
 17     {
 18         x = rand() % 100;
 19         y = rand() % 100;
 20         z = rand() % 100;// 随机产生三个0-100的整数
 21         j = 1 + rand() % 4;
 22         k = 1 + rand() % 4;// 随机产生 1,2,3,4来模拟加减        
 23         if (j == 1 && k == 1)
 24         {
 25             cout << x << "+" << y << "+" << z << "=" << endl;
 26             subject << x << "+" << y << "+" << z << "=" << x + y + z << endl;//记录到subjecttxt文件中
 27         }//同时为加的情况
 28         else if (j == 1 && k == 2)
 29         {
 30             if (x + y - z > 0)
 31             {
 32                 cout << x << "+" << y << "-" << z << "=" <<endl;
 33                 subject << x << "+" << y << "-" << z << "=" << x + y - z << endl;//记录到subjecttxt文件中
 34             }
 35             else
 36                 n = n + 1;
 37         }//先加后减的情况
 38         else if (j == 1 && k == 3)
 39         {
 40             cout << x << "+" << y << "-" << z << "=" <<endl;
 41             subject << x << "+" << y << "-" << z << "=" << x + y * z << endl;//记录到subjecttxt文件中
 42         }// 先加后乘的情况
 43         else if (j == 1 && k == 4)
 44         {
 45             if (z != 0)//排除分母为0的情况
 46             {
 47                 b = y / z;
 48                 o = (double)y / z;
 49                 if (b == o)
 50                 {
 51                     cout << x << "+" << y << "/" << z << "=" <<endl;
 52                     subject << x << "+" << y << "/" << z << "=" << x + y / z << endl;//记录到subjecttxt文件中
 53 
 54                 }
 55                 else
 56                     n = n + 1;
 57             }
 58             else
 59                 n = n + 1;
 60         }//先加后除的情况
 61         else if (j == 2 && k == 1)
 62         {
 63             if (x - y > 0)
 64             {
 65                 cout << x << "-" << y << "+" << z << "=" <<  endl;
 66                 subject << x << "-" << y << "+" << z << "=" << x - y + z << endl;//记录到subjecttxt文件中
 67             }
 68             else
 69                 n = n + 1;
 70         }//先减后加
 71         else if (j == 2 && k == 2)
 72         {
 73             if (x - y > 0 && x - y - z > 0)
 74             {
 75                 cout << x << "-" << y << "-" << z << "=" << endl;
 76                 subject << x << "-" << y << "-" << z << "=" << x - y - z << endl;//记录到subjecttxt文件中
 77 
 78             }
 79             else
 80                 n = n + 1;
 81         }//同时为减
 82         else if (j == 2 && k == 3)
 83         {
 84             if (x - y * z > 0)
 85             {
 86                 cout << x << "-" << y << "*" << z << "=" <<  endl;
 87                 subject << x << "-" << y << "*" << z << "=" << x - y * z << endl;//记录到subjecttxt文件中
 88             }
 89             else
 90                 n = n + 1;
 91         }//先减后乘
 92         else if (j == 2 && k == 4)
 93         {
 94             if (z != 0)//排除分母为0的情况
 95             {
 96                 b = y / z;
 97                 o = (double)y / z;
 98                 if (b == o && x - y / z > 0)
 99                 {
100                     cout << x << "-" << y << "/" << z << "=" <<  endl;
101                     subject << x << "-" << y << "/" << z << "=" << x - y / z << endl;//记录到subjecttxt文件中
102 
103                 }
104                 else
105                     n = n + 1;
106             }
107             else
108                 n = n + 1;
109 
110         }//先减后除
111         else if (j == 3 && k == 1)
112         {
113             cout << x << "*" << y << "+" << z << "=" <<endl;
114             subject << x << "*" << y << "+" << z << "=" << x * y + z << endl;//记录到subjecttxt文件中
115 
116         }//先乘后加
117         else if (j == 3 && k == 2)
118         {
119             if (x * y - z > 0)
120             {
121                 cout << x << "*" << y << "-" << z << "=" <<  endl;
122                 subject << x << "*" << y << "-" << z << "=" << x * y - z << endl;//记录到subjecttxt文件中
123             }
124             else
125                 n = n + 1;
126         }//先乘后减
127         else if (j == 3 && k == 3)
128         {
129             cout << x << "*" << y << "*" << z << "=" << endl;
130             subject << x << "*" << y << "*" << z << "=" << x * y * z << endl;//记录到subjecttxt文件中
131 
132         }//都是乘
133         else if (j == 3 && k == 4)
134         {
135             if (z != 0)//排除分母为0的情况
136             {
137                 b = x * y / z;
138                 o = (double)x * y / z;
139                 if (o == b)
140                 {
141                     cout << x << "*" << y << "/" << z << "=" << endl;
142                     subject << x << "*" << y << "*" << z << "=" << x * y * z << endl;//记录到subjecttxt文件中
143                 }
144                 else
145                     n = n + 1;
146             }
147             else
148                 n = n + 1;
149         }//先乘后除
150         else if (j == 4 && k == 1)
151         {
152             if (y != 0)
153             {
154                 b = x / y;
155                 o = (double)x / y;
156                 if (b == o)
157                 {
158                     cout << x << "/" << y << "+" << z << "=" << endl;
159                     subject << x << "*" << y << "*" << z << "=" << x * y * z << endl;//记录到subjecttxt文件中
160                 }
161                 else
162                     n = n + 1;
163             }
164             else
165                 n = n + 1;
166         }//先除后加
167         else if (j == 4 && k == 2)
168         {
169             if (y != 0)//排除分母为0的情况
170             {
171                 b = x / y;
172                 o = (double)x / y;
173                 if (b == o && x / y - z > 0)
174                 {
175                     cout << x << "/" << y << "-" << z << "=" << endl;
176                     subject << x << "/" << y << "-" << z << "=" << x / y - z << endl;//记录到subjecttxt文件中
177 
178                 }
179                 else
180                     n = n + 1;
181             }
182             else
183                 n = n + 1;
184 
185         }//先除后减
186         else if (j == 4 && k == 3)
187         {
188             if (y != 0)//排除分母为0的情况
189             {
190                 b = x / y;
191                 o = (double)x / y;
192                 if (b == o)
193                 {
194                     cout << x << "/" << y << "*" << z << "=" <<  endl;
195                     subject << x << "/" << y << "*" << z << "=" << x / y * z << endl;//记录到subjecttxt文件中
196                 }
197                 else
198                     n = n + 1;
199             }
200             else
201                 n = n + 1;
202         }//先除后乘
203         else if (j == 4 && k == 4)
204         {
205             if (y != 0 && z != 0)
206             {
207                 b = x / y;
208                 h = b / z;
209                 o = (double)x / y;
210                 p = (double)b / z;
211                 if (b == o && h == p)
212                 {
213                     cout << x << "/" << y << "/" << z << "=" << endl;
214                     subject << x << "/" << y << "/" << z << "=" << x / y / z << endl;//记录到subjecttxt文件中
215                 }
216                 else
217                     n = n + 1;
218             }
219             else
220                 n = n + 1;
221 
222         }//都是除
223     }
224 
225 
226 }
227 
228 
229 int main()
230 {
231     ofstream subject;
232     int a;
233     subject.open("subject.txt");
234     if (subject.is_open())
235     {
236         cout << "请输入题目数目" << endl;
237         cin >> a;
238         calutaor(a, subject);
239         subject.close();
240     }
241     return 0;
242 
243 }
代码源码

3.代码提交

点击页面上的Upload flies

 

 

 将文件夹托入方框内 点击 commit changes

 

 4.测试

按照作业要求进行断点测试

 

 

回归单元测试

 

 

 

 三 个人感想

1.自己对于c++掌握的并不好,虽然c++到现在没有学多少,但是自己应该去提前学习,毕竟代码技术是终身并不是来考试的。在编写程序时,更倾向于用c进行编写而非c++;

2.没有对程序的要求进行分析和把握,还是按照的以前的思路,不分析程序需求,直接上手用code and fix 方法进行编程。如果

 按照先分析程序要求,在进行编程,自己应该会轻松很多。同时也会让代码高效很多,而不是面临边写边大改的地步。

3.感受到了自己的代码知识在面对真正软件开发的不足,之前一直认为自己目前所学的知识,应该可以编写一些小型程序,但经过编写本次程序,才知道自己的代码知识差距了多少,在接下来的学习中,自己一定要去认真学习c++并走在前面。

4.vs2019编程的强大和github的方便,极大的方便了我们学习的资源。

5.写博客的训练,让自己总结出了自己的不足和代码思路的提炼。让自己找到了学习的方向。

 

 

 

posted @ 2019-09-20 16:55  新垣结衣wlp  阅读(336)  评论(2编辑  收藏  举报