【问题标题】:QT There are no errors or warnings but it doesn't output anythingQT 没有错误或警告,但它不输出任何内容
【发布时间】: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 &amp;&amp; c!=b &amp;&amp; a&lt;=l &amp;&amp; b&lt;=l){了吗?
  • @Filip 使用 Qt Creator
  • 我已经尝试过其他编译器并且它有效我认为您应该展示有效的代码。我不认为这里的问题是 Qt 代码。我认为您的算法存在缺陷。如果它在转换为使用 Qt 时以某种方式搞砸了那部分之前有效。

标签: c++ qt


【解决方案1】:

您的代码可以正常工作,但是可能您没有提供正确的输入,我已经在 Qt 中尝试过您的代码,它应该可以正常工作,尝试输入 220 和 284,这将找到该范围之间的友好数字。

这是我得到的输出:

【讨论】:

  • 是的,但是如果我输入 1 和 300 没有数字,但是 220 和 284 在这个范围内
  • 是的,但我不认为你完全理解你的代码,你的代码只会检查 2 个输入的数字是否友好,而不是在范围内找到每 2 个友好的数字。
  • 我同意,问题一定发生在有效的代码和问题中出现的代码之间。仅使用算法从代码中删除 Qt 不会返回 1 和 300 的结果:https://ideone.com/KKw81o
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多