题目要求
设计一个圆形类(Circle),和一个点类(Point),
计算并判断点和圆的位置关系。
无分区版 :
#include <iostream>
using namespace std;
//设置 点 类
class Point
{
private:
int p_x;
int p_y;
public:
//设置横坐标
void setX(int x){
p_x = x;
}
//设置纵坐标
void setY(int y){
p_y = y;
}
//输出横坐标
int showX(){
return p_x;
}
//输出纵坐标
int showY(){
return p_y;
}
};
//设置 圆 类
class Circle
{
private:
//设置圆心
Point center;
//设置半径
int c_R;
public:
//设置圆心
void setCenter(Point c){
center = c;
}
//设置半径
void setR(int r){
c_R = r;
}
//输出圆心(要用Point类型返回圆心)
Point showCenter(){
return center;
}
//输出半径
int showR(){
return c_R;
}
};
//全局函数判断点和圆的关系
void isInCircle(Circle &c , Point &p){
//利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
(c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());
int radius = c.showR();
if(squareDistance == radius * radius){
cout<<"点在圆上"<<endl;
}else if(squareDistance < radius * radius){
cout<<"点在圆内"<<endl;
} else if (squareDistance > radius * radius){
cout<<"点在圆外"<<endl;
}
}
int main(){
//定圆心
Point cc;
cc.setX(10);
cc.setY(0);
//定圆心,半径
Circle c;
c.setR(10);
c.setCenter(cc);
//定平面内一点
Point p;
p.setX(10);
p.setY(9);
//判断 点 与 圆 的位置关系
isInCircle(c,p);
}
分区版:
-
分区区间 :
-
point.h :
#pragma once
#include<iostream>
using namespace std;
//设置 点 类
class Point
{
private:
int p_x;
int p_y;
public:
//设置横坐标
void setX(int x);
//设置纵坐标
void setY(int y);
//输出横坐标
int showX();
//输出纵坐标
int showY();
};
- point.cpp :
#include "point.h"
//设置横坐标
void Point::setX(int x) {
p_x = x;
}
//设置纵坐标
void Point::setY(int y) {
p_y = y;
}
//输出横坐标
int Point::showX() {
return p_x;
}
//输出纵坐标
int Point::showY() {
return p_y;
}
- circle.h :
#pragma once
#include <iostream>
#include "point.h"
using namespace std;
//设置 圆 类
class Circle
{
private:
//设置圆心
Point center;
//设置半径
int c_R;
public:
//设置圆心
void setCenter(Point c);
//设置半径
void setR(int r);
//输出圆心(要用Point类型返回圆心)
Point showCenter();
//输出半径
int showR();
};
- circle.cpp
#include "circle.h"
//设置圆心
void Circle::setCenter(Point c) {
center = c;
}
//设置半径
void Circle::setR(int r) {
c_R = r;
}
//输出圆心(要用Point类型返回圆心)
Point Circle::showCenter() {
return center;
}
//输出半径
int Circle::showR() {
return c_R;
}
- 主函数.cpp
#include "point.h"
#include "circle.h"
//全局函数判断点和圆的关系
void isInCircle(Circle& c, Point& p) {
//利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
(c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());
int radius = c.showR();
if (squareDistance == radius * radius) {
cout << "点在圆上" << endl;
}
else if (squareDistance < radius * radius) {
cout << "点在圆内" << endl;
}
else if (squareDistance > radius * radius) {
cout << "点在圆外" << endl;
}
}
int main() {
//定圆心
Point cc;
cc.setX(10);
cc.setY(0);
//定圆心,半径
Circle c;
c.setR(10);
c.setCenter(cc);
//定平面内一点
Point p;
p.setX(10);
p.setY(10);
//判断 点 与 圆 的位置关系
isInCircle(c, p);
}
参考资料 :
https://www.bilibili.com/video/BV1et411b73Z