如果这个问题很简单,很抱歉,但是我是C++的新手。我正在设计一个使用二次公式计算2个根的程序。但是,当判别数为负数时,我的程序将无法正常工作。
#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()
header 中的 <cstdlib>
。
但是,据我了解,如果判别为否定,则仅表示没有解决方案。
因此,最好添加一个if
子句以仅在判别为肯定的情况下执行公式的该部分。
在更高级的数学中,负数的平方根的确在复平面上有一个答案。要获得此结果,可以使用数据类型complex<double>
并使用带复数的sqrt()
的重载版本。