一元二次方程

题目描述

建立一个求一元二次方程解的类(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;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值