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

时间:2017-07-20 22:22:18

标签: c++

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

Quadratic.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

Quadratic.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;
}

1 个答案:

答案 0 :(得分:2)

您的AODVRouting.h方法有误 - 它会更新setB而不是a

b