求助!各位大牛找错!

#include<iostream>
#include<cstdio>
using namespace std;
double a,b,c,d;
int top=1;
double x[5]={0};
double fun(double s){
return a*s*s*s+b*s*s+c*s+d;
}
void search(double s,double t){
if((t-s)<0.001){
x[top++]=s;
return;
}
if(fun(s)*fun(t)<0){
double mid=(s+t)/2;
if(fun(s)*fun(mid)==0){
x[top++]=mid;
return;
}
else if(fun(s)*fun(mid)<0){
search(s,mid);
}
else if(fun(mid)*fun(t)<0){
search(mid,t);
}
}
}
int main(){
int i;
cin>>a>>b>>c>>d;
for(i=-100;i<=100;i++){
if(top==4) break;
if(fun(i)*fun(i+1)<0){
if(fun(i)*fun(i+0.5)<0){
search(i,i+0.5);
}
else if(fun(i+0.5)*fun(i+1)<0){
search(i+0.5,i+1);
}
}
else if(fun(i)*fun(i+1)==0){
if(fun(i)==0){
x[top++]=i;
}
}
}
for(i=1;i<=3;i++){
printf("%.2f ",x[i]+0.005);
}
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1116
难度
5
分类
搜索 | 枚举 点击显示
标签
递交数
7804
已通过
2838
通过率
36%
被复制
14
上传者