您的位置:首页 > 其它

四则运算的功能添加版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.我们先用一个数代表运算式的结果,然后再在这个数上根据运算符号添加运算

---恢复内容结束---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: