//以下是三個頭文件
//AdvCircle.h
#pragma once
class AdvCircle
{
public:
void setCircle(int _r, int _x0, int _y0);
int getX1();
int getY1();
int getR1();
private:
int r;
int x0;
int y0;
};
//DisPoint.h
#pragma once
#include "MyPoint.h"
#include "AdvCircle.h"
class DisPoint//定義一個距離類,通過提供兩點座標來進行兩點之間距離的計算
{
public:
double CalculateDis(MyPoint & myp01, MyPoint & myp02);
int CalculateL(AdvCircle &mp01, AdvCircle &mp02);
};
//MyPoint.h
#pragma once
#include"AdvCircle.h"
class MyPoint
{
public:
void setPoint(AdvCircle &cir);
int getX1();
int getY1();
private:
int x1;
int y1;
};
下面是我的cpp文件
1.//AdvCircle.cpp
#include <iostream>
using namespace std;
#include "AdvCircle.h"
void AdvCircle::setCircle(int _r, int _x0, int _y0)
{
r = _r; x0 = _x0; y0 = _y0;
}
int AdvCircle::getX1()
{
return x0;
}
int AdvCircle::getY1()
{
return y0;
}
int AdvCircle::getR1()
{
return r;
}
2.//MyPoint.cpp
//在頭文件中可以進行前置聲明,但在cpp文件中不可以使用前置聲明
//如果需要使用前置的聲明,必須將函數寫在前面
#include "MyPoint.h"
#include "AdvCircle.h"
void MyPoint::setPoint(AdvCircle &cir)
{
x1 = cir.getX1();
y1 = cir.getY1();
}
int MyPoint::getX1()
{
return x1;
}
int MyPoint::getY1()
{
return y1;
}
3.//DisPoint.cpp
#include "MyPoint.h"
#include "DisPoint.h"
#include "AdvCircle.h"
#include <math.h>
double DisPoint::CalculateDis(MyPoint & myp01, MyPoint & myp02)
{
double dis = sqrt((myp01.getX1() - myp02.getX1())*(myp01.getX1() - myp02.getX1()) + (myp01.getY1() - myp02.getY1())*(myp01.getY1() - myp02.getY1()));
return dis;
}
int DisPoint::CalculateL(AdvCircle &mp01, AdvCircle &mp02)
{
int lenth = mp01.getR1() + mp02.getR1();
return lenth;
}
4.//main()
#include <iostream>
#include "MyPoint.h"
#include "AdvCircle.h"
#include "DisPoint.h"
using namespace std;
int main()
{
AdvCircle c1,c2;
int r1, x1, y1;
int r2, x2, y2;
cout << "請輸入第一個圓的半徑、x1和y1 " << endl;
cin >> r1 >> x1 >> y1;
c1.setCircle(r1, x1, y1);
cout << "請輸入第二個圓的半徑、x2和y2 " << endl;
cin >> r2 >> x2 >> y2;
c2.setCircle(r2, x2, y2);
MyPoint p1, p2;
DisPoint p;//這個值無論是什麼值其都可以,因爲必須要聲明,而其中p就是一個對象,其叫什麼無所謂
p1.setPoint(c1);
p2.setPoint(c2);
double tag = p.CalculateDis(p1, p2);
int l = p.CalculateL(c1, c2);
if (tag > l)
{
cout << "相離" << endl;
}
else if (tag = l)
{
cout << "相切" << endl;
}
else
{
cout << "相交" << endl;
}
cout << " 兩圓心距離爲 " << tag << endl;
system("pause");
}
注:第一此寫博客,如有錯誤和建議,歡迎糾正
最近在學c++,多交流,共同進步