最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++類和對(duì)象深入探索之分文件編寫(xiě)點(diǎn)和圓的關(guān)系詳解

 更新時(shí)間:2022年05月18日 10:30:29   作者:對(duì)象new不出來(lái)  
先前把C++類和對(duì)象的封裝講完了,并且留下了一個(gè)判斷兩個(gè)立方體是否相等的案例,但是那么多知識(shí)點(diǎn),僅僅一個(gè)案例是不夠的,所以再來(lái)一個(gè)分文件編寫(xiě)點(diǎn)圓關(guān)系的案例;創(chuàng)建圓類和點(diǎn)類,圓類包含點(diǎn)類,算是一個(gè)嵌套吧,順便復(fù)習(xí)一下分文件編寫(xiě)的方法,開(kāi)整

上一篇封裝直達(dá)

創(chuàng)建圓心類

point.h

#pragma once
#include<iostream>
using namespace std;
//創(chuàng)建圓心類
class Point
{
public:
	void setM_x(int x);
	int  getM_x();
	void setM_y(int y);
	int  getM_y();
private:
	int m_x;
	int m_y;
};

把圓心的橫縱坐標(biāo)設(shè)為私有,公共屬性寫(xiě)了兩對(duì)成員方法,用來(lái)給圓心屬性賦值和讀取,這里只寫(xiě)了方法的聲明,具體實(shí)現(xiàn)將在point.cpp文件實(shí)現(xiàn)。

point.cpp

#include"point.h"
void Point::setM_x(int x)
{
	m_x = x;
}
int Point::getM_x()
{
	return m_x;
}
void Point::setM_y(int y)
{
	m_y = y;
}
int Point::getM_y()
{
	return m_y;
}

這個(gè)文件就是point頭文件中定義成員方法的具體實(shí)現(xiàn)了,引入point.h頭文件,在四個(gè)方法的返回值類型和方法名面前加::,表示屬于圓心類的方法,然后完成賦值和取值的實(shí)現(xiàn)。

創(chuàng)建圓類

Circle.h

#pragma once
#include<iostream>
#include "point.h"
using namespace std;
//創(chuàng)建 Circle 類
class Circle
{
public:
	void  setM_r(int r);
	int   getM_r();
	void  setCenter(Point &center);
	Point getCenter();
private:
	int m_r;
	Point m_center;
};

這里和point.h類似,設(shè)置了圓心和圓半徑的屬性并設(shè)置為私有;在公共權(quán)限下定義為半徑賦值和取值的方法;對(duì)于圓心,我引入point.h的頭文件,在圓類中創(chuàng)建了圓心m_center,設(shè)置圓心方法中采用引用傳參,將圓心類完成賦值的圓心傳入到圓類中;獲取圓心的途徑是通過(guò) getCenter 方法調(diào)用point 類中的 get 方法。

Circle.cpp

#include"Circle.h"
void Circle::setM_r(int r)
{
	m_r = r;
}
int Circle::getM_r()
{
	return m_r;
}
void Circle::setCenter(Point &center)
{
	m_center = center;
}
Point Circle::getCenter()
{
	return m_center;
}

引入Circle.h頭文件,將.h的方法完成具體實(shí)現(xiàn)。

判斷點(diǎn)圓關(guān)系函數(shù)

void relative(Circle& c, Point& p)
{
	//圓心到點(diǎn)距離的平方為distance
	int distance =
	(c.getCenter().getM_x() - p.getM_x()) * (c.getCenter().getM_x() - p.getM_x()) +
	(c.getCenter().getM_y() - p.getM_y()) * (c.getCenter().getM_y() - p.getM_y());
	//半徑的平方 rDistance
	int rDistance = c.getM_r() * c.getM_r();
	if (distance > rDistance)       cout << "點(diǎn)在圓外" << endl;
	else if (distance == rDistance) cout << "點(diǎn)在圓上" << endl;
	else                            cout << "點(diǎn)在圓內(nèi)" << endl;
}

數(shù)學(xué)上點(diǎn)和圓的關(guān)系是圓心到點(diǎn)的距離和半徑的比較,這里我把等號(hào)兩邊平方,比較兩個(gè)數(shù)據(jù)的大小即可;若距離大于半徑,點(diǎn)在圓外;距離等于半徑,點(diǎn)在圓上;距離小于半徑,點(diǎn)在圓內(nèi);relative 函數(shù)傳入Circle 類和 Point 類的對(duì)象,分別計(jì)算圓心到點(diǎn)距離的平方 distance和半徑的平方 rDistance,利用多重If語(yǔ)句輸出不同結(jié)果即可。

最終實(shí)現(xiàn)

#include"Circle.h"
void relative(Circle& c, Point& p)
{
	//圓心到點(diǎn)距離的平方為distance
	int distance =
	(c.getCenter().getM_x() - p.getM_x()) * (c.getCenter().getM_x() - p.getM_x()) +
	(c.getCenter().getM_y() - p.getM_y()) * (c.getCenter().getM_y() - p.getM_y());
	//半徑的平方 rDistance
	int rDistance = c.getM_r() * c.getM_r();
	if (distance > rDistance)       cout << "點(diǎn)在圓外" << endl;
	else if (distance == rDistance) cout << "點(diǎn)在圓上" << endl;
	else                            cout << "點(diǎn)在圓內(nèi)" << endl;
}
int main()
{
	int x = 0, y = 0, a = 0, b = 0, r = 0;
	Circle C;
	Point center, P;
	cout << "圓心橫坐標(biāo) x 為:"; cin >> x; cout << endl;
	cout << "圓心縱坐標(biāo) y 為:"; cin >> y; cout << endl;
	center.setM_x(x);
	center.setM_y (y);
	C.setCenter(center);
	cout << "此圓 半徑  r 為:"; cin >> r; cout << endl;
	C.setM_r(r);
	cout << "點(diǎn)橫坐標(biāo) x 為:"; cin >> a; cout << endl;
	cout << "點(diǎn)縱坐標(biāo) y 為:"; cin >> b; cout << endl;
	P.setM_x(a);
	P.setM_y(b);
	relative(C, P);
}

主函數(shù)創(chuàng)建Circle類對(duì)象 C,和Point 類對(duì)象 P,center;通過(guò)set方法設(shè)置center點(diǎn)的坐標(biāo)并傳入C的setCenter方法中,這樣圓心數(shù)據(jù)賦值完成,然后利用相同方法對(duì)圓半徑以及點(diǎn)賦值,最后調(diào)用relative函數(shù)比較即可,附上三種運(yùn)行結(jié)果,如下:

總結(jié)

這個(gè)案例應(yīng)該是很好理解的,總共是五個(gè)文件,兩個(gè).h三個(gè).cpp。這樣看著非常的舒服和整潔,建議大家在做稍微復(fù)雜的項(xiàng)目或者案例時(shí)可以多利用分文件編寫(xiě),那么C++實(shí)現(xiàn)點(diǎn)和圓的關(guān)系到此結(jié)束,期待你的鼓勵(lì)和支持

到此這篇關(guān)于C++類和對(duì)象深入探索之分文件編寫(xiě)點(diǎn)和圓的關(guān)系詳解的文章就介紹到這了,更多相關(guān)C++分文件編寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

林甸县| 丰顺县| 平湖市| 西宁市| 珠海市| 纳雍县| 彭水| 昌邑市| 台东市| 宜兰县| 景洪市| 金沙县| 甘洛县| 株洲县| 宝丰县| 淳化县| 新兴县| 西乡县| 南雄市| 西乌珠穆沁旗| 宁乡县| 马边| 福鼎市| 荔波县| 江源县| 兴业县| 板桥市| 龙江县| 商城县| 静宁县| 天柱县| 肇州县| 彭泽县| 从化市| 万宁市| 清镇市| 临洮县| 宿州市| 遵义市| 广安市| 慈利县|