我正在使用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;
}
请您参考如下方法:
每次出现此循环时,尝试打印绝对值和精度值:
while (absolute >= precision)
。
那应该帮助您弄清楚。