Я работаю над школьным заданием, которое требует использования квадратного уравнения, чтобы найти корни топора ^ 2 + bx + c = 0, с б & с в качестве входных данных.
#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 после запуска программы. Есть идеи, что я делаю не так?
Ваша программа фактически умножает решение на 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);
Других решений пока нет …