依据Right-BICEP要求的对四则运算2的测试

时间:2023-03-09 05:40:18
依据Right-BICEP要求的对四则运算2的测试

代码:

 #include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
#include <math.h>
#include <fstream>
#include <string>
#define random()(rand()%1000)
using namespace std; //数字转换为字符串
string int_string(int number)
{
int value = abs(number);//取绝对值
char str[];
_itoa_s(value, str, ); //运用itoa()函数将int型整数转换为字符串
string str_= str;
return str_;
}
//算式转换为字符串
string group(string str1, string str2, char m) // group:算式组合
{
string Equation; // equation:算式
Equation = str1 + m + str2;
return Equation;
}
//生成运算符
char mark(int opt)
{
int opt1, a;
char symbol[]; // 符号数组
if (opt == )
{
opt1 = ;
}
if (opt == )
{
opt1 = ;
}
a = random() % opt1+; //随机生成1-2或1-4的数,随opt的值而定,opt意为是否含有乘除法
if (a == ) symbol[] = '+';
if (a == ) symbol[] = '-';
if (a == ) symbol[] = '*';
if (a == ) symbol[] = '/';
return symbol[];
}
//主函数
void main()
{
srand((int)time(NULL)); //设置时间种子,每次执行种子不同,生成不同的随机数
int num1, num2,minus;
int opt, bracket, output, max, min, amount, control, b, c,d;
string str_num1, str_num2, value; //数字-字符串
cout << "是否需要包含乘除法?1(有),0(没有):" << endl;
cin >> opt; //opt:选择是否含有乘除法
/*cout << "是否需要包含负数1(有),0(没有):" << endl;
cin >> minus; */
cout << "是否含有括号?1(有),0(没有):" << endl;
cin >> bracket;
cout << "题目是否要在文件中输出?1(是),0(不是):" << endl;
cin >> output;
cout << "请输入数字范围:(格式为:最小数 空格 最大数)" << endl;
cin >> max>>min;
cout << "请输入出题数量:" << endl;
cin >> amount;
string equation[]; //定义数组
char symbol;
ofstream fout;
/*if (opt == 1)
{
cout << "除法有无余数,1(有),0(无)" << endl;
cin >> remainder;
}*/
if ( output == )
{
fout.open("output.txt");
fout << amount << "道四则运算题如下:" << endl;
}
else
{
cout << amount << "道四则运算题如下:" << endl;
}
for (int i = ; i<amount; i++) //为输出规定题数
{
num1 = random() % (max - min + ) + min;// 随机生成min-max的整数
num2 = random() % (max - min + ) + min;// 随机生成min-max的整数
control = random() % + ; //控制是几个数的运算式,最多支持10个数的运算式
symbol = mark(opt);
/*if (minus == 0) //本来要加负数的,思路有点不清晰,以后改进
{
str_num1 = int_string(num1);
str_num2 = int_string(num2);
}
if (minus == 1)
{
d = random() % 2; //随机生成0-1的数
if (d == 0)
{
str_num1 = int_string(num1);
str_num2 = '-' + str_num2;
}
}*/
str_num1 = int_string(num1);
str_num2 = int_string(num2);
equation[i] = group(str_num1, str_num2, symbol);
if (control >= )
{
for (; control >= ; control--)
{
symbol = mark(opt);
str_num1 = equation[i];
if (bracket == )
{
b = random() % ; //随机生成0-2的数
if (b == ) //如果b=0,就在字符串str_num1的左右加上括号
{
str_num1 = '(' + str_num1 + ')';
}
}
symbol = mark(opt);
num2 = random() % (max - min + ) + min;// 随机生成min-max的整数
str_num2 = int_string(num2);
b = random() % ;
if (b == )
{
value = str_num1;
str_num1 = str_num2;
str_num2 = value;
}
equation[i] = group(str_num1, str_num2, symbol);
}
}
//判断是否重复
int repeat = ; //repeat:重复
for (c = ; c<i; c++)
{
if (equation[c] == equation[i])
{
i = i - ;
repeat = ;
break;
}
}
if (repeat != )//若不重复,则输出
{
if (output == )
{
fout << equation[i] << "=" << endl;
}
else
{
cout << equation[i] << "=" << endl;
}
} }
if (output == ) //输出到文件
{
fout.close();
}
}

Right-BICEP测试要求:

1.Right-结果是否正确?

2.B-是否所有的边界条件都是正确的?

3.I-能查一下反向关联吗?

4.C-能用其他手段交叉检查一下结果吗?

5.E-你是否可以强制错误条件发生?

6.P-是否满足性能要求?

对四则运算2程序的测试用例如下:

第一组测试用例:数值范围1-148,输出数量10,不含乘除、括号,在DOS界面输出。

依据Right-BICEP要求的对四则运算2的测试

第二组测试用例:数值范围1-541,输出数量11,含乘除,在DOS界面输出。

依据Right-BICEP要求的对四则运算2的测试

第三组测试用例:数值范围1-234,输出数量21,含乘除、括号,在DOS界面输出。

依据Right-BICEP要求的对四则运算2的测试

第四组测试用例:数值范围1-672,输出数量16,不含乘除,含括号,在DOS界面输出。

依据Right-BICEP要求的对四则运算2的测试

第五组测试用例:数值范围1-198,输出数量10,含乘除、括号,在文件中输出。

依据Right-BICEP要求的对四则运算2的测试

依据Right-BICEP要求的对四则运算2的测试