四则运算的功能添加版02
2016-03-19 19:48
330 查看
---恢复内容开始---
成功方面:这次的四则运算增加了运算结果和答对次数,在上次的运算中添加了括号
失败方面:但是因为括号的运算对于我们的编程能来说还是有些难度所以括号的运算并没有成功
一、题目避免重复
二、定制(数量/打印方式)
三、控制参数
1.是否有乘除法
2.是否有负数
3.是否有余数
4.答题控制小数点后2位
5.是否有括号
四、控制数字范围
(新要求)五、成功的表示了正确答案和题目答对次数
#include<iostream> #include<stdio.h> #include<time.h> #include<fstream> using namespace std; int main() { ofstream outfile; int i, a, b, c, d, e, f, g, l, m, o, x, y, z, count=0; double finalnum = 0, cnum; int number, muldiv, rnum, numf, neg, rem; //muldiv判断乘除,rnum判断随机数,numf数值范围,neg判断有无负数,rem判断有无余数 char psign, msign; //符号正负 int bra, braran; //bra判断是否有括号 int num, signnum; //num数字个数,signnum符号个数 int numarray[20]; //szsz数字数组 char fh[4] = { '+', '-', '*', '/' }, signarray[10];//fhsz符号数组 cout << "请输入要打印的数量:"; cin >> number; cout << "请输入数值范围:0-"; cin >> numf; cout << "是否有括号: 1、有 2、无 :"; cin >> bra; cout << "加减有无负数: 1、有 2、无 :"; cin >> neg; cout << "是否有乘除法: 1、有 2、无 :"; cin >> muldiv; if (muldiv == 1) { cout << "除法有无余数: 1、有 2、无 :"; cin >> rem; } srand((unsigned)time(NULL));//时间种子,每次出现随机数不同 if (bra == 1) //判断是否有括号 { braran = 3; } if (bra == 2) { braran = 2; } if (muldiv == 1) //判断是否有乘除 { rnum = 4; } if (muldiv == 2) { rnum = 2; } for (i = 0; i < number; i++) { a = rand() % numf; b = rand() % numf; e = rand() % numf; f = rand() % numf; if (neg == 1) { l = rand() % 2; m = rand() % 2; if (l == 0) //加减有负数时,随机生成正负号 { psign = '-'; } if (l == 1) { psign = ' '; } if (m == 0) { msign = '-'; } if (m == 1) { msign = ' '; } } else { psign = msign = ' '; } switch (d = rand() % braran) { case 0: //整数 { switch (c = rand() % rnum) { case 0:cout << psign << a << "+" << msign << b << "=" << endl; cnum = a + b; cin >> finalnum; if (psign == ' '&&msign == ' ') { cnum = a + b; } if (psign == '-'&&msign == ' ') { cnum = b - a; } if (psign == ' '&&msign == '-') { cnum = a - b; } if (psign == '-'&&msign == '-') { cnum = -a - b; } if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } break; case 1:cout << psign << a << "-" << msign << b << "=" << endl; cnum = a - b; cin >> finalnum; if (psign == ' '&&msign == ' ') { cnum = a - b ; } if (psign == '-'&&msign == ' ') { cnum = -b - a ; } if (psign == ' '&&msign == '-') { cnum = a + b ; } if (psign == '-'&&msign == '-') { cnum = -a + b ; } if (int(finalnum*100) ==int (cnum*100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } break; case 2:cout << a << "×" << b << "=" << endl; cnum = a * b; cin >> finalnum; if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout <<"正确答案为:"<< cnum << endl; } break; case 3: { if (rem == 2) { while (b == 0) { b = rand() % numf; } o = a%b; while (o != 0) { b = rand() % numf; while (b == 0) { a = rand() % numf; b = rand() % numf; } o = a%b; } } else { while (b == 0) { b = rand() % numf; } } cout << a << "÷" << b << "=" << endl; cnum = a / b; cin >> finalnum; if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } }break; } } break; case 1://真分数 { while (a == 0 || b == 0 || a >= b) { a = rand() % numf; b = rand() % numf; } while (e == 0 || f == 0 || e >= f) { e = rand() % numf; f = rand() % numf; } switch (g = rand() % rnum) { case 0: { cout << psign << a << "/" << b << "+" << msign << e << "/" << f << "=" << endl; cin >> finalnum; if (psign == ' '&&msign == ' ') { cnum = a / double (b) + e / double(f); } if (psign == '-'&&msign == ' ') { cnum = e / double(f) - a / double (b); } if (psign == ' '&&msign == '-') { cnum = a / double (b) - e / double(f); } if (psign == '-'&&msign == '-') { cnum = -a / double(b) - e / double(f); } if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } break; } case 1: { cout << psign << a << "/" << b << "-" << msign << e << "/" << f << "=" << endl; cin >> finalnum; if (psign == ' '&&msign == ' ') { cnum = a / double(b) - e / double(f); } if (psign == '-'&&msign == ' ') { cnum = -(e / double(f)) - (a / double(b)); } if (psign == ' '&&msign == '-') { cnum = (a / double(b)) + (e / double(f)); } if (psign == '-'&&msign == '-') { cnum = -(a / double(b)) + (e / double(f)); } if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } break; }cout << "一共答对了:" << count << "题" << endl; case 2: { cout << a << "/" << b << "×" << e << "/" << f << "=" << endl; cnum = (a / double(b)) * (e / double(f)); cin >> finalnum; if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } break; } case 3: { cout << a << "/" << b << "÷" << e << "/" << f << "=" << endl; cnum = (a / double(b)) / (e / double(f)); cin >> finalnum; if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else { cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; } } } break; } break; case 2: { num = 3 + rand() % 8; //有括号时,数字和符号数组 signnum = num - 1; for (y = 0; y < num; y++) { numarray[y] = rand() % numf; } for (y = 0; y < signnum; y++) { x = rand() % 4; signarray[y] = fh[x]; } signarray[signnum] = '='; switch (z = signnum % 2) { case 0: { cout << numarray[0]; cout << signarray[0]; finalnum =finalnum+numarray[0]; for (y = 1; y < signnum; y++) { cout << "("; cout << numarray[y]; cout << signarray[y]; cout << numarray[y + 1]; cout << ")"; switch (y) { case'+':finalnum = finalnum + numarray[y] + numarray[y + 1]; break; case'-':finalnum = finalnum + numarray[y] - numarray[y + 1]; break; case'*':finalnum = finalnum + numarray[y] * numarray[y + 1]; break; case'/':finalnum = finalnum + numarray[y] / numarray[y + 1]; break; } cout << signarray[y + 1]; y = y + 1; }cout << endl; }break; case 1: { for (y = 0; y < signnum; y++) { cout << "("; cout << numarray[y]; cout << signarray[y]; cout << numarray[y + 1]; cout << ")"; switch (y) { case'+':finalnum = finalnum + numarray[y] + numarray[y + 1]; break; case'-':finalnum = finalnum + numarray[y] - numarray[y + 1]; break; case'*':finalnum = finalnum + numarray[y] * numarray[y + 1]; break; case'/':finalnum = finalnum + numarray[y] / numarray[y + 1]; break; } cout << signarray[y + 1]; y = y + 1; } cout << endl; cin >> finalnum; if (int(finalnum * 100) == int(cnum * 100)) { cout << "答案正确!" << endl; count++; } else cout << "答案错误!" << endl; cout << "正确答案为:" << cnum << endl; }break; } } break; } } cout << "一共答对了:" << count << "题" << endl; }
设计思想:
1.我们结对开发所以选择了较好的那个程序。
2.因为俩人分工合作,每个人负责不同的功能
3.我们先用一个数代表运算式的结果,然后再在这个数上根据运算符号添加运算
---恢复内容结束---
相关文章推荐
- FFmpeg frei0r water 滤镜
- 搜索历史 AutoCompleteTextView自定义匹配关键字匹配
- Hello World
- JavaWeb开发之十:JSP运行原理与基础
- 四则运算 个人项目整理
- Android快速开发系列 10个常用工具类
- 《数学之美》读书记录
- Spark运行模式及原理(一)
- 实现自动生成30道四则运算题目(4)
- 四则运算二项目计划总结
- modbus学习
- 第三周作业(一)单元测试
- 第四周上机实践项目——项目2-太乐了
- Android SwipeRefreshLayout 谷歌官方下拉刷新空间 最好的没之一
- 用Python写出LSTM-RNN的代码!
- Xshell的安装与使用,向云服务器上传文件
- pycaffe对于图片的加载与训练
- pycaffe API的使用
- 杂记-大佬尚技术讲堂
- caffe学习入门:pycaffe的使用