求助
查看原帖
求助
260473
beata楼主2022/3/2 21:43
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double f(double x)
{
	return a*pow(x,3)+b*pow(x,2)+c*x+d;
}
bool find(int sad)
{
	if(f(sad)*f(sad+1)<=0) return true;
	else return false;
}
int main()
{
	double ans[4],ran[4];
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	int chy=1;
	for(int i=-101;i<=99;i++)
	{
		if(find(i)==true) ran[chy++]=i;
		if(f(i+1)==0) i++;
	}
	for(int i=1;i<=3;i++)
	{
		double mina=ran[i],maxa=ran[i]+1,mid;
		while(maxa-mina>0.001)
	    {
	    	mid=(mina+maxa)/2;
	    	if(f(mid)==0) break;
			else if(f(mid)*f(mina)<0) maxa=mid;
	    	else if(f(mid)*f(maxa)<0) mina=mid;
	    }
	    printf("%.2lf ",mid);
	}
	return 0;
 } #include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double f(double x)
{
	return a*pow(x,3)+b*pow(x,2)+c*x+d;
}
bool find(int sad)
{
	if(f(sad)*f(sad+1)<=0) return true;
	else return false;
}
int main()
{
	double ans[4],ran[4];
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	int chy=1;
	for(int i=-101;i<=99;i++)
	{
		if(find(i)==true) ran[chy++]=i;
		if(f(i+1)==0) i++;
	}
	for(int i=1;i<=3;i++)
	{
		double mina=ran[i],maxa=ran[i]+1,mid;
		while(maxa-mina>0.001)
	    {
	    	mid=(mina+maxa)/2;
	    	if(f(mid)==0) break;
			else if(f(mid)*f(mina)<0) maxa=mid;
	    	else if(f(mid)*f(maxa)<0) mina=mid;
	    }
	    printf("%.2lf ",mid);
	}
	return 0;
 } 

没有输出。。。求助各位神犇

2022/3/2 21:43
加载中...