我正在完成一项学校作业,要求使用二次方程来找到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。知道我做错了吗?
答案 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);