В приведенной ниже программе я пытаюсь вычислить расстояние между двумя точками. Для этого я сделал два объекта Point. В методе, который возвращает расстояние, я использовал формулу расстояния для вычисления расстояния между двумя точками в пространстве. Однако каждый раз, когда я запускаю программу, я получаю не числовое значение, которого там быть не должно. Пожалуйста помоги.
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
class Point
{
public:
Point(int a, int b);
~Point();
double getDistance(Point& P2);
void setPoints(int a, int b);
int getX();
int getY();
private:
int x;
int y;
};
Point::Point(int a, int b)
{
setPoints(a,b);
}
Point::~Point()
{
//Nothing much to do
}
void Point::setPoints(int a, int b)
{
x = a;
y = b;
}
double Point::getDistance(Point& P2)
{
int xdiff = P2.getX()-this->getX();
int ydiff = P2.getY()-this->getY();
xdiff = xdiff*xdiff;
ydiff = ydiff*ydiff;
double retval = sqrt((xdiff) - (ydiff));
return retval;
}
int Point::getX()
{
return x;
}
int Point::getY()
{
return y;
}
int main(int argc, char* argv[])
{
Point P1(0,0);
Point P2(0,1);
Point& pr = P2;
cout<<P1.getDistance(pr)<<endl;
return 0;
}
Point
и просто записав его какp1_x = 0; p1_y = 0; p2_x = 0; p2_y = 0; dist = sqrt((p2_x - p1_x) * (p2_x - p1_x) - (p2_y - p1_y) * (p2_y - p1_y));
, который показывает ту же ошибку в пяти строках кода. И вы могли бы еще уменьшить его, так как вы знали, что проблема была в вызовеsqrt()
.... - person Brooks Moses   schedule 21.01.2012