输出一个txt文件,可以copy到word文档,打印回家训练娃的加减法
void MainWindow::test2(int answerMax, int count) {
// 创建一个随机数生成器
QRandomGenerator *generator = QRandomGenerator::global();
// 创建一个文件
QString filename =
QString("%1以内三个数加减法%2道.txt").arg(answerMax).arg(count);
QFile file(filename);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
// 创建一个文本流并附加到文件上
QTextStream out(&file);
// 生成N个问题
int i = 0;
int j = 0;
int z = 0;
while (1) {
// 生成随机数
int num1 = generator->bounded(1, answerMax + 1);
int num2 = generator->bounded(1, answerMax + 1);
int num3 = generator->bounded(1, answerMax + 1);
// 确保至少有两个数字是不同的,以避免重复或相同的数字
if (num1 == num2) {
num2 = generator->bounded(1, answerMax + 1);
}
if (num1 == num3) {
num3 = generator->bounded(1, answerMax + 1);
}
if (num2 == num3) {
num3 = generator->bounded(1, answerMax + 1);
}
// 生成运算符
char op = (generator->bounded(2) == 0) ? '+' : '-';
char op2 = (generator->bounded(2) == 0) ? '+' : '-';
// 如果是减法,确保第一个数不大于第二个数
if (op == '-' && num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
int result1 = 0;
if (op2 == '-') {
result1 = num1 - num2;
if (result1 < 0) {
continue;
}
if (result1 < num3) {
int temp = result1;
result1 = num3;
num3 = temp;
}
} else {
result1 = num1 + num2;
}
// 计算答案
int answer;
if (op2 == '+') {
answer = result1 + num3;
} else {
answer = result1 - num3;
}
if (answer == 0) {
z++;
if (z >= 10) {
continue;
}
}
if (answer > answerMax) {
continue;
}
// 写入问题到文件
if ((j + 1) % 6 == 0) {
// 添加一个换行符
out << QString("%1 %2 %3 %4 %5= \n")
.arg(num1)
.arg(op)
.arg(num2)
.arg(op2)
.arg(num3);
} else {
out << QString("%1 %2 %3 %4 %5= ")
.arg(num1)
.arg(op)
.arg(num2)
.arg(op2)
.arg(num3);
}
i++;
j++;
if ((i + 1) % 100 == 0) {
j = 0;
out << QString("\n\n");
}
if (i == count - 1) {
break;
}
}
file.close();
}