gpt4 book ai didi

c++ - 返回奇怪值的简单 C++ 类文件中的 Set 方法

转载 作者:行者123 更新时间:2023-11-30 03:30:02 26 4
gpt4 key购买 nike

我在类文件中使用 set 函数时遇到问题。到目前为止,我有以下内容。我正在尝试编写一个具有三个私有(private)数据成员的二次类,并且可以计算二次的值和二次的实根数。我并没有像得到设置方法那样不给我奇怪的值而停留在数学部分。当我使用 main 进行测试时,a、b 和 c 的值是我在创建对象时没有输入的数字。

二次元.hpp

#ifndef QUADRATIC_HPP
#define QUADRATIC_HPP

class Quadratic
{
private:
double a;
double b;
double c;

public:
Quadratic();
Quadratic(double, double, double);

void setA(double);
void setB(double);
void setC(double);

double getA();
double getB();
double getC();

double valueFor(double);
int numRealRoots();
};
#endif

二次元.cpp

#include <cmath>
#include <iostream>

Quadratic::Quadratic()
{
setA(1.0);
setB(1.0);
setC(1.0);
}

Quadratic::Quadratic(double A, double B, double C)
{
a = A;
b = B;
c = C;
}

void Quadratic::setA(double A)
{
a = A;
}

void Quadratic::setB(double B)
{
a = B;
}

void Quadratic::setC(double C)
{
c = C;
}

double Quadratic::getA()
{
return a;
}

double Quadratic::getB()
{
return b;
}

double Quadratic::getC()
{
return c;
}

double Quadratic::valueFor(double x)
{
return (a*(pow(x,2)) + b*x + c);
}

int Quadratic:: numRealRoots()
{
double discriminant = pow(b,2) - (4*a*c);
double epsilon = 0.00001;

int realRoots;
if (discriminant <= epsilon && discriminant > 0)
realRoots = 1;
else if (discriminant > epsilon)
realRoots = 2;
else
realRoots = 0;

return realRoots;
}

最佳答案

您的 setB 方法是错误的 - 它更新 a 而不是 b:

void Quadratic::setB(double B)
{
b = B; // Was "a = B;" in the original code
}

关于c++ - 返回奇怪值的简单 C++ 类文件中的 Set 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45226127/

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