【发布时间】:2021-02-15 21:35:42
【问题描述】:
我的代码应该在 2 个数字(a 和 b)之间找到所有 Amicable 数字。 我已经尝试过其他编译器并且它可以工作,但我需要 GUI。 代码如下:
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QTextStream>
using namespace std;
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
int a, b, c, l;
string data_1, temp;
QString data;
QString A = ui->frst->text();
QString L = ui->lst->text();
a = A.toInt();
l = L.toInt();
for (int k = a; k <= l; k++) {
int s1 = 0;
for (int i = 1; i <= a / 2; i++) {
if (a % i == 0)
s1 = s1 + i;
}
b = s1;
int s2 = 0;
for (int i = 1; i <= b / 2; i++) {
if (b % i == 0)
s2 = s2 + i;
}
c = s2;
if (a == c && c != b && a <= l && b <= l) {
temp = to_string(b) + " and " + to_string(c) + "... \r\n";
data_1 += temp;
}
}
data = QString::fromStdString(data_1);
ui->OutPut->setText(data);
}
在哪里: 首先是输入, lst 是 b 输入(都是 EditLines), 而 OutPut 是 Label 以显示找到的数字
【问题讨论】:
-
您是使用 Qt Creator 创建项目还是手动创建项目?
-
“但它不输出任何东西”是什么意思?你验证过你在“a”、“l”和“data_1”中得到了什么吗?你验证输入
if(a==c && c!=b && a<=l && b<=l){了吗? -
@Filip 使用 Qt Creator
-
我已经尝试过其他编译器并且它有效我认为您应该展示有效的代码。我不认为这里的问题是 Qt 代码。我认为您的算法存在缺陷。如果它在转换为使用 Qt 时以某种方式搞砸了那部分之前有效。