首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在返回奇怪值的简单c++类文件中设置方法

在返回奇怪值的简单c++类文件中设置方法
EN

Stack Overflow用户
提问于 2017-07-21 06:22:18
回答 1查看 82关注 0票数 1

我在使用类文件中的set函数时遇到了问题。到目前为止,我有以下几点。我正在尝试编写一个二次类,它有三个私有数据成员,可以计算二次的值和二次中的实根的数量。我没有被困在数学部分,因为我得到的set方法不会给我提供奇怪的值。当我使用main进行测试时,a、b和c的值是我在创建对象时没有输入的数字。

Quadratic.hpp

代码语言:javascript
复制
#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

Quadratic.cpp

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-21 06:25:05

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

代码语言:javascript
复制
void Quadratic::setB(double B)
{
    b = B; // Was "a = B;" in the original code
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45226127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档