gpt4 book ai didi

c++ - 二次方程 : negative discriminant in C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:45 25 4
gpt4 key购买 nike

如果这个问题很简单,我很抱歉,但我是 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() 来自 <cstdlib>标题。

但是,据我了解,如果判别式为负,则仅表示无解。

因此,仅添加 if 可能是更好的解决方案如果判别式为正,则仅执行公式的那部分子句。

在更高级的数学中,负数的平方根在复平面上确实有答案。要获得此结果,您可以使用数据类型 complex<double>并使用 sqrt() 的重载版本这需要一个复数。

关于c++ - 二次方程 : negative discriminant in C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com