量化交易之C++篇 - 面向对象设计案例 - 点和圆的关系

// point.h
#pragma once // 防止头文件重复包含

#include <iostream>

using namespace std;


class Point {

public:
	void setX(int x);

	int getX();

	void setY(int y);

	int getY();


private:
	int m_X;
	int m_Y;
};
// point.cpp
#include "point.h"


void Point::setX(int x) {
	this->m_X = x;
}

int Point::getX() {
	return this->m_X;
}

void Point::setY(int y) {
	this->m_Y = y;
}

int Point::getY() {
	return this->m_Y;
}
// circle.h
#pragma once // 防止头文件重复包含

#include <iostream>
#include "point.h"

using namespace std;


class Circle {

public:

	void setR(int r);

	int getR();

	void setCenter(Point point);

	Point getCenter();

	bool pointIsInCircle(Point point);

private:
	int m_R; // 半径
	Point m_Center;
};
// circle.cpp
#include "circle.h"

void Circle::setR(int r) {
	this->m_R = r;
}

int Circle::getR() {
	return this->m_R;
}

void Circle::setCenter(Point point) {
	this->m_Center = point;
}

Point Circle::getCenter() {
	return this->m_Center;
}

bool Circle::pointIsInCircle(Point point) {
	double distance = sqrt(pow(this->getCenter().getX() - point.getX(), 2) + pow(this->getCenter().getY() - point.getY(), 2));

	if (distance == this->getR()) {
		printf("点 在 圆上 \n");
	}
	else if (distance > this->getR()) {
		printf("点 在 圆外 \n");
	}
	else if (distance < this->getR()) {
		printf("点 在 圆内 \n");
	}
	else {
		printf("这是个 什么 妖魔鬼怪? \n");
	}

	return distance < this->getR();
}
// C++ 的 .cpp文件
#include <iostream>

#include "point.h"
#include "circle.h"

using namespace std;

bool isInCircle(Circle& circle, Point& point) {
	Point circleCenter = circle.getCenter();

	float distance = sqrt(pow(circleCenter.getX() - point.getX(), 2) + pow(circleCenter.getY() - point.getY(), 2)); // pow 平方, sqrt 开根号

	if (distance == circle.getR()) {
		printf("点 在 圆上 \n");
	} else if(distance > circle.getR()) {
		printf("点 在 圆外 \n");
	} else if (distance < circle.getR()) {
		printf("点 在 圆内 \n");
	} else {
		printf("这是个 什么 妖魔鬼怪? \n");
	}

	return distance < circle.getR();
}


void test01() {
	// 全局变量来判断
	Point point;
	point.setX(10);
	point.setY(10);

	Circle circle;
	Point center;
	center.setX(10);
	center.setY(0);
	circle.setCenter(center);
	circle.setR(10);

	isInCircle(circle, point);
}


void test02() {

	Point point;
	point.setX(10);
	point.setY(10);

	Circle circle;
	Point center;
	center.setX(10);
	center.setY(0);
	circle.setCenter(center);
	circle.setR(10);

	circle.pointIsInCircle(point);
}


int main() {

	 test01();

	 //test02();
	
	return EXIT_SUCCESS;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值