二次方程的根

时间:2018-02-19 13:34:36

标签: c++

所以我试着编写一个计算二次方程根的程序。这就是我提出的。第一种可能性(D> 0)起作用,但其他可能不起作用。我在代码中找不到错误。请你帮助我好吗?谢谢!

    #include <iostream>
    #include <cmath>
    using namespace std;

    int main(){

    float a;
    float b;
    float c;
    float x1;
    float x2;
    float D=b*b-4*a*c;
    float realPart;
    float imaginaryPart;

    cout << "Write a: " << endl;
    cin >> a;
    cout << "Write b: " << endl;
    cin >> b;
    cout << "Write c: " << endl;
    cin >> c;


   //first possibility D > 0
   if (D > 0){
      x1=(-b+sqrt(D))/(2*a);
      x2=(-b-sqrt(D))/(2*a);
      cout << "Results are: x1: " << x1 << " and x2 " << x2 << endl;
    }
   //second possibility D < 0
   else if (D < 0){
      realPart = -b/(2*a);
      imaginaryPart = (sqrt(-D))/(2*a);
      cout << "First result: " << realPart << " + " << imaginaryPart << "i" 
      <<endl;
      cout << "Second result: " << realPart << " - " << imaginaryPart << "i" 
      << endl;
    }
   else if (D == 0){
      x1=(-b)/(2*a);
      cout << "Result is: " << x1 << endl;
    }
   else
       cout << "THERE'S A MISTAKE!" << endl;

   return 0;
   }

1 个答案:

答案 0 :(得分:1)

虽然你可以达到预定义结果的意图

D = b * b - 4 * a * c;
a之前

bc已知 1 ,这不是您的情况。

这里最简单的方法是在知道Dab之后计算判定c。即在你的程序中进一步发表声明。目前,程序的行为未定义。

1 一种方法是使用演员