C++求解一元二次方程,数据由用户输入
一、 一元二次方程的解有三种情况
- 求根公式:(-b+根号下b2-4ac)/2a 或 (-b-根号下b2-4ac)/2a
- b2-4ac>0时方程有两个不相同的解。
- b2-4ac=0时的方程有两个相同的解。
- b2-4ac<0时,方程无解。
完整代码
#include<iostream>
#include<cmath>
using namespace std;
/*求解ax2+bx+c=0的解,输入,a,b,c输出三种情况的解,(-b+根号下b2-4ac)/2a,(-b-根号下b2-4ac)/2a
b2-4ac>0,=0,<0时的解*/
float equation(float a,float b,float c){
float i;
i=b*b-4*a*c;//判别式
float dayu(float a,float b,float c);//函数声明
float dengyu(float a,float b,float c);//函数声明
float xiaoyu(float a,float b,float c);//函数声明
if(i>0) return dayu(a,b,c);//判别式大于0时代入大于的函数
if(i==0) return dengyu( a, b, c);//判别式等于0时代入等于的函数
if(i<0) return xiaoyu( a, b, c);//判别式小于于0时代入小于的函数
}
float dayu(float a,float b,float c){//b2-4ac>0,大于
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/2*a;
x2=(-b-sqrt(b*b-4*a*c))/2*a;
cout<<"方程有两个不同解:"<<"x1="<<x1<<"\tx2="<<x2<<endl;
}
float dengyu(float a,float b,float c){//b2-4ac=0,等于
float x;
x=(-b+sqrt(b*b-4*a*c))/2*a;
cout<<"方程有两个相同解:"<<"x1=x2="<<x<<endl;
}
float xiaoyu(float a,float b,float c){//b2-4ac<0时,小于
cout<<"b*b-4*a*c<0,方程无解"<<endl;
}
float equation(float a,float b,float c);//函数声明,在int main 前声明,整个文件都能调用这个声明的函数
float dayu(float a,float b,float c);//函数声明
float dengyu(float a,float b,float c);//函数声明
float xiaoyu(float a,float b,float c);//函数声明
int main(){
float a,b,c;
cin>>a>>b>>c;
equation(a,b,c);//调用
return 0;
}