QT实现 三个数的加减法自动生成

发布时间:2024年01月23日

三位数加减法自动生成函数

输出一个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();
}

界面

在这里插入图片描述

文章来源:https://blog.csdn.net/wsdxho/article/details/135764845
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。