四则运算2
/*四则运算生成
要求: 1、题目避免重复
2、可定制(数量/打印方式)
3、可以控制下列参数
是否有乘除法
是否有括号·
数值范围
加减有无负数
除法有无余数
设计思想:题目避免重复用数组,每次输出时与之前输出的比较是否相等。
输出数量由循环决定。
打印方式用if else 语句:可以直接输出,也可以输出到txt文件当中。
是否有乘除法,加减有无负数,除法有无余数都用if else语句。
正负数可以在每个数之前加一个运算符号:负号用“-”,正号用“ ”空格表示。
判断余数用z=x%y语句,判断z是否为0。
括号输出的考虑比较不周全,还不能达到随机随意添加括号。数字最多10个,符号最多9个,
创建符号的数组,如果符号数是奇数,则在没俩个数字之间添加括号;如果符号数是偶数,则第
一个数字不考虑,剩下的奇数个符号考虑与之前相同。
*/
#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;
int number, pcc, pccs, numf, pjj, pys, scfs; //pcc判断乘除,pccs判断随机数,numf数值范围,pf判断有无负数,pys判断有无余数,scfs输出方式
char fh1, fh2; //fh符号正负
int pdkh,pdkhs; //pdkh判断是否有括号,pdkhs括号随机数
int szgs, fhgs; //szgs数字个数,fhgs符号个数
int szsz[20]; //szsz数字数组,fhsz符号数组
char fh[4] = { '+', '-', '*', '/' }, fhsz[10];
cout << "请输入要打印的数量:";
cin >> number;
cout << "请输入打印方式: 1、直接输出 2、输入到txt文件 :";
cin >> scfs;
cout << "请输入数值范围:0-";
cin >> numf;
cout << "是否有括号: 1、有 2、无 :";
cin >> pdkh;
cout << "加减有无负数: 1、有 2、无 :";
cin >> pjj;
cout << "是否有乘除法: 1、有 2、无 :";
cin >> pcc;
if (pcc == 1)
{
cout << "除法有无余数: 1、有 2、无 :";
cin >> pys;
}
srand((unsigned)time(NULL));//时间种子,每次出现随机数不同
if (pdkh == 1) //判断是否有括号
{
pdkhs = 3;
}
if (pdkh == 2)
{
pdkhs = 2;
}
if (pcc == 1) //判断是否有乘除
{
pccs = 4;
}
if (pcc == 2)
{
pccs = 2;
}
for (i = 0; i < number; i++)
{
a = rand() % numf;
b = rand() % numf;
e = rand() % numf;
f = rand() % numf;
if (pjj == 1)
{
l = rand() % 2;
m = rand() % 2;
if (l == 0) //加减有负数时,随机生成正负号
{
fh1 = '-';
}
if (l == 1)
{
fh1 = ' ';
}
if (m == 0)
{
fh2 = '-';
}
if (m == 1)
{
fh2 = ' ';
}
}
else
{
fh1 = fh2 = ' ';
}
if (scfs == 1) //判断输出方式为直接输出
{
switch (d = rand() % pdkhs)
{
case 0: //整数
{
switch (c = rand() % pccs)
{
case 0:cout << fh1 << a << "+" << fh2 << b << "=" << endl; break;
case 1:cout << fh1 << a << "-" << fh2 << b << "=" << endl; break;
case 2:cout << a << "×" << b << "=" << endl; break;
case 3:
{
if (pys == 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;
}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() % pccs)
{
case 0: cout << fh1 << a << "/" << b << "+" << fh2 << e << "/" << f << "=" << endl; break;
case 1: cout << fh1 << a << "/" << b << "-" << fh2 << e << "/" << f << "=" << endl; break;
case 2: cout << a << "/" << b << "×" << e << "/" << f << "=" << endl; break;
case 3: cout << a << "/" << b << "÷" << e << "/" << f << "=" << endl;
}break;
}break;
case 2:
{
szgs = 3 + rand() % 8; //有括号时,数字和符号数组
fhgs = szgs - 1;
for (y = 0; y < szgs; y++)
{
szsz[y] = rand() % numf;
}
for (y = 0; y < fhgs; y++)
{
x = rand() % 4;
fhsz[y] = fh[x];
}
fhsz[fhgs] = '=';
switch (z=fhgs % 2)
{
case 0:
{
cout << szsz[0];
cout << fhsz[0];
for (y = 1; y < fhgs; y++)
{
cout << "(";
cout << szsz[y];
cout << fhsz[y];
cout << szsz[y + 1];
cout << ")";
cout << fhsz[y + 1];
y = y + 1;
}cout<<endl;
}break;
case 1:
{
for (y = 0; y < fhgs; y++)
{
cout << "(";
cout << szsz[y];
cout << fhsz[y];
cout << szsz[y + 1];
cout << ")";
cout << fhsz[y + 1];
y = y + 1;
}
cout<<endl;
}break;
}
}break;
}
}
else //选择输出方式为 输出到文件
{
outfile.open("myfile.txt", ios_base::out | ios_base::app);
switch (d = rand() % pdkhs)
{
case 0: //整数
{
switch (c = rand() % pccs)
{
case 0:outfile << fh1 << a << "+" << fh2 << b << "=" << endl; break;
case 1:outfile << fh1 << a << "-" << fh2 << b << "=" << endl; break;
case 2:outfile << a << "×" << b << "=" << endl; break;
case 3:
{
if (pys == 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;
}
}
outfile << a << "÷" << b << "=" << 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() % pccs)
{
case 0: outfile << fh1 << a << "/" << b << "+" << fh2 << e << "/" << f << "=" << endl; break;
case 1: outfile << fh1 << a << "/" << b << "-" << fh2 << e << "/" << f << "=" << endl; break;
case 2: outfile << a << "/" << b << "×" << e << "/" << f << "=" << endl; break;
case 3: outfile << a << "/" << b << "÷" << e << "/" << f << "=" << endl; break;
}
}break;
case 2:
{
szgs = 3 + rand() % 8; //有括号时,数字和符号数组
fhgs = szgs - 1;
for (y = 0; y < szgs; y++)
{
szsz[y] = rand() % numf;
}
for (y = 0; y < fhgs; y++)
{
x = rand() % 4;
fhsz[y] = fh[x];
}
fhsz[fhgs] = '=';
switch (z = fhgs % 2)
{
case 0:
{
outfile << szsz[0];
outfile << fhsz[0];
for (y = 1; y < fhgs; y++)
{
outfile << "(";
outfile << szsz[y];
outfile << fhsz[y];
outfile << szsz[y + 1];
outfile << ")";
outfile << fhsz[y + 1];
y = y + 1;
}outfile << endl;
}break;
case 1:
{
for (y = 0; y < fhgs; y++)
{
outfile << "(";
outfile << szsz[y];
outfile << fhsz[y];
outfile << szsz[y + 1];
outfile << ")";
outfile << fhsz[y + 1];
y = y + 1;
}
outfile << endl;
}break;
}
}break;
}
outfile.close();
}
}
}
周活动总结表
姓名:王春帆 日期:2016/03/12
|
听课 |
编写程序 |
阅读课本 |
|
|
|
日总结 |
周日3.6 |
|
|
|
|
|
|
|
周一 |
100 |
|
30 |
|
|
|
130 |
周二 |
|
|
|
|
|
|
|
周三 |
|
|
|
|
|
|
|
周四 |
100 |
60 |
|
|
|
|
160 |
周五 |
|
|
30 |
|
|
|
30 |
周六 |
|
450 |
|
|
|
|
450 |
周总结 |
200 |
510 |
60 |
|
|
|
770 |
时间记录日志
学生:王春帆 日期:3/12/2016
教师:王建民 课程:软件工程
日期 |
开始 时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3/7 |
14:00 |
15:50 |
10 |
100 |
上课 |
理论学时 |
|
|
|
19:00 |
19:30 |
|
30 |
看书 |
《构建之法》 |
|
|
3/10 |
14:00 |
15:50 |
10 |
100 |
上课 |
理论学时 |
|
|
|
20:00 |
21:00 |
|
60 |
编写程序 |
四则运算2 |
|
|
3/11 |
19:00 |
19:30 |
|
30 |
看课件 |
上课所讲 |
|
|
3/12 |
9:00 |
12:00 |
|
180 |
编写程序 |
四则运算2 |
|
|
|
13:00 |
15:00 |
|
120 |
编写程序 |
四则运算2 |
|
|
|
15:30 |
18:00 |
|
150 |
编写程序 |
四则运算2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
缺陷记录日志
学生:王春帆
日期:3/12/2016
教员:先生王
程序号:四则运算2
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
3/12 |
1 |
|
生成 |
错误列表 |
5min |
|
描述 |
Char类型的赋值方式错误,应该用char a=’-’ 小括号 |
|||
|
2 |
|
生成 |
调试 |
10min |
|
描述 |
a/b 中b可能为0 |
|||
|
3 |
|
生成 |
错误列表 |
1min |
|
描述 |
If else 语句的括号错误 |
|||
|
4 |
|
执行 |
修改代码 |
10min |
|
描述 |
输出到文件中只有一道运算题,输出方式需要修改 |
|||
|
|
|
|
|
|
上一篇: 程连苏是谁 美国魔术师程连苏简介
下一篇: ZZULIOJ 1037: 四则运算