Вычисление корня квадратного уравнения. Переполнение стека

Я хочу вычислить корень квадратного уравнения ax2 + bx + c = 0, Я думаю, что мой алгоритм правильный, но я новичок в функциях, и я думаю, что моя ошибка заключается в их вызове. Не могли бы вы помочь мне? Заранее спасибо. Вот код

#include<iostream>
#include<cmath>
using namespace std;
const double EPS = 1.0e-14;
int quadraticEquation(int& a,int& b, int& c)

{
if(abs(a) < EPS)
{
if(abs(b) < EPS)
{
cout << "No solution" << endl;
}
else
{
double x = - c /b ;
cout << "One root: " << x << endl;
}
}
else
{
double delta = b * b - 4 * a * c;
if(delta < 0)
{
cout << "No solution:\n" ;
}
else
{
double square_delta = sqrt(delta);
double root_1 = (-b + square_delta) / (2 * a);
double root_2 = (-b - square_delta) / (2 * a);
cout << "x1 = " << root_1 << endl;
cout << "x2 = " << root_2 << endl;
}
}

}

int main()
{
int a = 1;
int b = 2;
int c = 3;
cout << "The solution is: " << quadraticEquation(int a,int b,int c);

return 0;
}

-2

Решение

Определите функцию как:

int quadraticEquation(int a,int b, int c)

Без & знаки для передачи параметров по значению, а не по ссылке (хотя, как утверждает хуанхопанза в комментарии, это строго не требуется).

И назовите это как:

cout << "The solution is: " << quadraticEquation( a, b, c);

Без int, потому что в вызовах функций вы не должны указывать тип параметра.

-1

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

Так должно быть:

cout << "The solution is: " << quadraticEquation(a, b, c); // no types in calling a function
3

Это не совсем заданный вопрос, и Эренон и Пако Абато действительно ответили на проблему C ++.

Но есть еще некоторые улучшения в вашем алгоритме:

  • абс (а) < EPS и абс (б) < EPS — если abc (c) < EPS каждый х это решение
  • если дельта < 0 должно быть if delta <= (-EPS)
  • ты забыл if abs(delta) < EPS) одно двойное решение: double x = - b / a;
2
По вопросам рекламы [email protected]