Простой решатель формул C ++, возвращающий неправильные ответы

Я работаю над школьным заданием, которое требует использования квадратного уравнения, чтобы найти корни топора ^ 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 после запуска программы. Есть идеи, что я делаю не так?

2

Решение

Ваша программа фактически умножает решение на 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]