您的位置:首页 > 编程语言 > C语言/C++

C++实现设计一个圆形类(Circle),和一个点类(Point), 计算并判断点和圆的位置关系

2020-07-26 00:42 483 查看

题目要求


设计一个圆形类(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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐