一博客
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.写博客的训练,让自己总结出了自己的不足和代码思路的提炼。让自己找到了学习的方向。