题目:要求设计一个圆类和一个点类。计算圆和点的关系
问题分析:
首先圆类属性为 x,y,半径
点类属性为 x,y
圆类里面的属性x,y可以使用点的类属性
属性设置为private,给外部提供接口以获取属性
判断点与圆的关系方法为:
如果点到圆心的距离大于圆的半径,则点在圆外;
如果点到圆心的距离等于圆的半径,则点在圆上;
如果点到圆心的距离小于圆的半径,则点在圆内;
代码如下:
#include<iostream>
#include"swap.h"
using namespace std;
class Point{
public:
void setX(int x){
p_x = x;
}
void setY(int y){
p_y = y;
}
int getX(){
return p_x;
}
int getY(){
return p_y;
}
private:
int p_x;
int p_y;
};
class Circle{
public:
void setCenter(int x){
mc_r = x;
}
int getCenter(){
return mc_r;
}
void setXY(Point x){
mc_xy = x;
}
Point getXY(){
return mc_xy;
}
private:
int mc_r;
Point mc_xy;
};
void IsInCircle(Point x, Circle y){
if ((x.getX() - y.getXY().getX())*(x.getX() - y.getXY().getX()) + (x.getY() - y.getXY().getY())*(x.getY() - y.getXY().getY()) == y.getCenter()*y.getCenter())
cout << "在圆上" << endl;
else if ((x.getX() - y.getXY().getX())*(x.getX() - y.getXY().getX()) + (x.getY() - y.getXY().getY())*(x.getY() - y.getXY().getY()) < y.getCenter()*y.getCenter())
cout << "在圆内" << endl;
else
cout << "在圆外" << endl;
}
int main(){
//设置一个点
Point p;
p.setX(10);
p.setY(1);
//设置圆
Circle c;
c.setCenter(10);
//设置圆的圆心
Point c_p;
c_p.setX(0);
c_p.setY(0);
c.setXY(c_p);
cout << "开始执行判断函数" << endl;
IsInCircle(p, c);
system("pause");
return 0;
}