程序崩溃,没有错误消息

时间:2016-10-20 14:53:09

标签: c++ qt loops crash

我正在使用Qt Creator(社区)来学习如何编码 我有一个计算函数根的赋值,我尝试在Qt Widgets项目中使用我找到的代码here
当我尝试运行程序时,Qt没有检测到任何错误 但是,每当我尝试使用on_pushButton_clicked()显示结果时,我的程序都会崩溃。
我的讲师怀疑某处应该有一个开环,但我没有看到任何 非常感谢任何帮助 代码如下:

double function1(double q)
{
double ab = ((q*q*q)+(9*q*q)-(15*q)+98)*(sin(q));
return ab;
}

void MainWindow::on_pushButton_clicked()
{
    ui->label->setText(tr("%1").arg(func1()));
}

double MainWindow::func1()
{    
    std::setprecision(4);
    double precision = 0.001;
    double a = -10;
    double b = -9;
    double product = function1(a)*function1(b);
    double absolute = fabs(a-b);
    double e = 0;
    if (product>0)
    {
        ++a;
        ++b;
    }
    else
    {
        while (absolute >= precision)
        {
            e = (a + b) / 2;
            double fa = function1(a);
            double fe = function1(e);
            if (fe == 0)
            {
                return e;
                break;
            }
            if (fa*fe>0)
            {
                a = e;
            }
            else if (fa*fe<0)
            {
                b = e;
            }
        }
    }
    return e;
}

2 个答案:

答案 0 :(得分:3)

每次发生此循环时,请尝试打印绝对精度的值:

  

while(绝对&gt; =精度)

。 这应该可以帮助你搞清楚。

答案 1 :(得分:1)

如果单击“调用”on_pushButton_clicked的按钮时程序崩溃,则此插槽内的内容有问题。

首先,是否先前使用新语句(特别是标签)创建了所有堆内存对象?

PS:您可以删除 break 指令,由于之前的行中 return ,函数已退出while循环。