求用C++编写几何点(二维平面上)的类Point,包括位置属性(二维坐标x,y)
成员函数包括:点的位置获取函数GetX()和GetY(),点的位置设置函数SetX()和SetY(),点的位置移动函数MoveTo()点的信息打印函数Display()。...
成员函数包括:
点的位置获取函数GetX()和GetY(),
点的位置设置函数SetX()和SetY(),
点的位置移动函数MoveTo()
点的信息打印函数Display()。
void main() { Point p(100,100);
p.Display();
p.MoveTo(200,200);
cout<<"after moving…"<<endl;
p.Display(); }
程序输出结果如下: X: 100 Y: 100 after moving… X: 200 Y: 200 展开
点的位置获取函数GetX()和GetY(),
点的位置设置函数SetX()和SetY(),
点的位置移动函数MoveTo()
点的信息打印函数Display()。
void main() { Point p(100,100);
p.Display();
p.MoveTo(200,200);
cout<<"after moving…"<<endl;
p.Display(); }
程序输出结果如下: X: 100 Y: 100 after moving… X: 200 Y: 200 展开
1个回答
展开全部
下面这个类是我以前写的。
你只需稍做修改函数名就可以了,且功能大得多。
输出的话。
cout<<"after moving…" << p <<endl;
就可以了,不需要display。
template <class T = double>
class point
{
public:
T x;
T y;
point() {};
point(T a,T b)
{
x = a;
y = b;
}
point(const point<T>& a)
{
x = a.x;
y = a.y;
}
point<T>& operator = (const point<T>& p)
{
x = p.x;
y = p.y;
}
friend point<T> operator - (point<T>& p1, point<T>& p2)
{
point<T> p(p1.x - p2.x, p1.y - p2.y);
return p;
}
void MoveTo(T a,T b)
{
x = a;
y = b;
}
void SetX(T a)
{
x = a;
}
void SetY(T a)
{
y = a;
}
T GetX()
{
return x;
}
T GetY()
{
return y;
}
friend T crossProduct(point<T> p1, point<T> p2) //向量叉积
{
return p1.x * p2.y - p1.y * p2.x;
}
friend T direction(point<T> p1, point<T> p2, point<T> pO) // 向量叉积 之差 判断方向
{
return crossProduct(p1 - pO, p2 - pO);
}
friend bool operator == (point<T>& p1, point<T>& p2) //判断位置
{
return (abs(p1.x - p2.x) < EP && abs(p1.y - p2.y) < EP);
}
friend T dist(point<T> p1, point<T> p2) //计算距离
{
return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
}
friend istream& operator >> (istream& input, point<T>& p) //输入
{
input >> p.x;
input >> p.y;
return input;
}
friend ostream& operator << (ostream& output, point<T>& p) //输出
{
output << p.x << ' ' << p.y;
return output;
}
};
你只需稍做修改函数名就可以了,且功能大得多。
输出的话。
cout<<"after moving…" << p <<endl;
就可以了,不需要display。
template <class T = double>
class point
{
public:
T x;
T y;
point() {};
point(T a,T b)
{
x = a;
y = b;
}
point(const point<T>& a)
{
x = a.x;
y = a.y;
}
point<T>& operator = (const point<T>& p)
{
x = p.x;
y = p.y;
}
friend point<T> operator - (point<T>& p1, point<T>& p2)
{
point<T> p(p1.x - p2.x, p1.y - p2.y);
return p;
}
void MoveTo(T a,T b)
{
x = a;
y = b;
}
void SetX(T a)
{
x = a;
}
void SetY(T a)
{
y = a;
}
T GetX()
{
return x;
}
T GetY()
{
return y;
}
friend T crossProduct(point<T> p1, point<T> p2) //向量叉积
{
return p1.x * p2.y - p1.y * p2.x;
}
friend T direction(point<T> p1, point<T> p2, point<T> pO) // 向量叉积 之差 判断方向
{
return crossProduct(p1 - pO, p2 - pO);
}
friend bool operator == (point<T>& p1, point<T>& p2) //判断位置
{
return (abs(p1.x - p2.x) < EP && abs(p1.y - p2.y) < EP);
}
friend T dist(point<T> p1, point<T> p2) //计算距离
{
return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
}
friend istream& operator >> (istream& input, point<T>& p) //输入
{
input >> p.x;
input >> p.y;
return input;
}
friend ostream& operator << (ostream& output, point<T>& p) //输出
{
output << p.x << ' ' << p.y;
return output;
}
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询