RingOV, отлично!
Удовлетворительно :/
Легко делается переполнение.
К сожалению, всё гораздо, гораздо сложнее!
В компьютерных вычислениях нас подстерегает
огромное количество неприятных неожиданностей!
Даже в случае простейшего квадратного уравнения:
sol@eee:~/cpp-lessons$ ./sqsolve
ax²+bx+c=0
Введите через пробел коэффициенты a b c:
10 2 0.1
D = b²-4ac = -5.96046e-08
D < 0 => уравнение не имеет действительных корней
Из-за ошибки округления неправильно вычислен
дискриминант, и вместо кратного корня получили
отсутствие корней.
Это не ошибка округления, а ПРИНЦИПИАЛЬНО
НЕПРАВИЛЬНЫЙ результат. И исключить
всеподобные неприятности — далеко не тривиальная
задача. И она — не для первого урока по C++.
А вот это неправильно:
sol@eee:~/cpp-lessons$ ./sqsolve
ax²+bx+c=0
Введите через пробел коэффициенты a b c:
0 1 2
D = b²-4ac = 1
D > 0 => уравнение имеет 2 различных корня
x1 = (-b-sqrt(D))/2/a = -inf
x1 = (-b+sqrt(D))/2/a = -nan