题目描述
建立一个求一元二次方程解的类(a*x2+b*x+c=0),输入系数a,b,c 的值后打印出这个方程的解。
输入描述:
输入第一行为样例数m,接下来m行每行3个整数a、b、c。
输出描述:
输出m行,要求格式如下:若无解则输出-1,若有单解则输出x=..,若有两解则输出x1=...,x2=...,具体参见样例,保留小数点后两位。
示例1
输入
复制
3 1 -3 2 1 -2 1 2 1 2
输出
复制
x1=1.00,x2=2.00 x=1.00 -1
备注:
注意a为0的情况。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
class Equation{
private:
int a, b , c;
public:
Equation();
Equation(int ai, int bi, int ci);
void show();
};
Equation::Equation(){
a = b = c = 0;
}
Equation::Equation(int ai, int bi , int ci){
a = ai, b = bi , c = ci;
}
void Equation::show(){
double x1 = 0, x2 = 0;
if(a==0){
x1 = (-c*1.000)/(b*1.000);
printf("x=%.2lf\n",x1);
}
else if((b*b-4*a*c)>0){
x1 = (-b*1.000 - sqrt(1.000*b*b-1.000*4*a*c))/(2*a*1.000);
x2 = (-b*1.000 + sqrt(1.000*b*b-1.000*4*a*c))/(2*a*1.000);
printf("x1=%.2lf,x2=%.2lf\n",x1,x2);
}
else if((b*b-4*a*c)==0){
x1 = (-b*1.000)/(2*a*1.000);
printf("x=%.2lf\n",x1);
}
else{
cout << "-1" << endl;
}
}
int main(){
int n;
cin >> n;
int i1,i2,i3;
while(n--){
cin >> i1 >> i2 >> i3;
Equation eq(i1,i2,i3);
eq.show();
}
return 0;
}