用程序求一个多次方程的根

img

img


下面的是题目,请问我的程序哪里出问题了,没有办法算出来正确的数值。


#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main(){
 
    double a,b,c,delta;
    const double precision=1e-6;//小数精度。 
    double x1,x2;
    cin>>a>>b>>c;
    delta=b*b-4*a*c;
    if(delta<-precision)
        cout<<"No answer!\n";
    else if(fabs(delta)<precision){
        //认为等于0,浮点数,无法做相等比较。 
        x1=x2=-b/(2*a);
        printf("x1=x2=%.5lf",x1); 
    }else{
        //delta>0
        delta=sqrt(delta);
        x1=(-b+delta)/(2*a);
        x2=(-b-delta)/(2*a);
        if(x1>x2){
            a=x1;
            x1=x2;
            x2=a;
        }
        printf("x1=%.5lf;x2=%.5lf",x1,x2);
    }
        
    
    
 
return 0;
}