简单C ++二次方程求解器返回错误答案

时间:2017-09-22 02:15:54

标签: c++ equation quadratic

我正在完成一项学校作业,要求使用二次方程来找到ax ^ 2 + bx + c = 0的根,并使用b& c作为输入。

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

int main()
{
   int a, b, c;

   cout << "Enter coefficients a b c: " << endl;
   cin >> a >> b >> c;
   double r1, r2;

   r1=((-1)*b+sqrt(b*b-4*a*c))/2*a;

   r2=((-1)*b-sqrt(b*b-4*a*c))/2*a;


   cout << "The roots are: " << r1 << " and " << r2 << endl;

   return 0;
}

然而,当我输入2 -8 8时,正确答案是2和2,但是在运行程序后我得到8和8。知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

您的程序实际上是将解决方案乘以a而不是将其除以。 (这就是4倍的原因)

r1 = (((-1)*b+sqrt(b*b-4*a*c))/2)*a);

尝试在2 * a:

周围加上一对括号
r1=((-1)*b+sqrt(b*b-4*a*c))/(2*a);