Прошу прощения, если этот вопрос очень прост, но я новичок в C++. Я разрабатываю программу, которая вычисляет 2 корня, используя квадратичную формулу. Однако моя программа не работает, когда мой дискриминант является отрицательным числом.Квадратичное уравнение: отрицательный дискриминант в C++
#define _USE_MATH_DEFINES // for C++
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int pointa;
int pointb;
int pointc;
int discriminant1;
float root1;
float root2;
cout << "Please enter a, b and c: ";
cin >> pointa;
cin >> pointb;
cin >> pointc;
discriminant1 = (pow(pointb, 2)) - (4 * pointa * pointc);
root1 = (-(pointb) + sqrt(discriminant1))/(2 * pointa);
root2 = (-(pointb) - sqrt(discriminant1))/(2 * pointa);
cout << "Root1 :" << root1 << endl;
cout << "Root2 :" << root2 << endl;
return 0;
Основная проблема - вход для pointb
. Есть ли способ заставить pointb
стать положительным числом при возведении в квадрат ввода, подобно добавлению круглых скобок в TI-84? При вводе числа, подобного -1, это приводит к тому, что вся формула становится недействительной.
Работает ли [abs()] (http://www.cplusplus.com/reference/cstdlib/abs/)? –
Кроме того, вы должны рассмотреть подводные камни использования 'pow' с целыми типами. – Hurkyl
Почему отрицательный 'pointb' делает выражение недействительным? Формула только приводит к комплексным числам, если * дискриминант * отрицателен. – owacoder