第二次作业 熟悉使用工具
一博客
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.写博客的训练,让自己总结出了自己的不足和代码思路的提炼。让自己找到了学习的方向。