C++——类和对象的封装(实例)

题目:要求设计一个圆类和一个点类。计算圆和点的关系

问题分析:

首先圆类属性为 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;
}
结果如下:

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值