我正在使用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;
}
答案 0 :(得分:3)
每次发生此循环时,请尝试打印绝对和精度的值:
while(绝对&gt; =精度)
。 这应该可以帮助你搞清楚。
答案 1 :(得分:1)
如果单击“调用”on_pushButton_clicked的按钮时程序崩溃,则此插槽内的内容有问题。
首先,是否先前使用新语句(特别是标签)创建了所有堆内存对象?
PS:您可以删除 break 指令,由于之前的行中 return ,函数已退出while循环。