我的最后一个问题在 2 分钟后关闭。我只是在成员函数方面寻求帮助。我应该让成员函数检查以下内容:
- 广场是否在另一个广场之外;
- 该正方形是否包含另一个正方形;
- 该方格是否包含在另一个方格中;
- 正方形是否在外部与另一个正方形相切(即,它们的边界是否接触,但除了那些边界点之外,它们彼此外部);
- 正方形是否在内部与另一个正方形相切(也就是说,它们在边界上有共同的点,但除了那些边界点,一个正方形包含在另一个正方形中);
- 正方形的边界是否与另一个正方形的边界相交。
我的私人成员是:双x,y;
那么我是否应该使用公共成员函数,同时使用 x 和 y 来计算周长和面积?
这就是我到目前为止所拥有的:头文件
#include <iostream>
#include <cmath>
class Square
{
int x, y;
int size;
public:
Square(int x, int y, int size) : x(x), y(y), size(size) { }
~Square() {};
bool isExternal(const Square& rhs);
bool contains(const Square& otherSquare);
bool iscontained(const Square& otherSquare);
bool borderintersect (const Square& otherSquare);
bool bordertangent (const Square& otherSquare);
}
实施
#include "Square.h"
bool Square::isExternal(const Square& rhs) const {
return (((x < rhs.x) || ((x + size) > (rhs.x + rhs.size)) && ((y < rhs.y) || ((y + size) > (rhs.y + rhs.size))
};
bool Square::contains(const Square& otherSquare)const {
};
bool Square::iscontained(const Square& otherSquare)const {
};
bool borderintersect(const Square& othersquare)
{
// If this square's bottom is greater than the other square's top
if ((this->y - (this->size / 2)) > (othersquare->y + (othersquare->size / 2)))
{
return (false);
}
// the reverse
if ((this->y + (this->size / 2)) < (othersquare->y - (othersquare->size / 2)))
{
return (false);
}
// If this square's left is greater than the other square's right
if ((this->x - (this->size / 2)) > (othersquare->x + (othersquare->size / 2)))
{
return (false);
}
if ((this->x + (this->size / 2)) < (othersquare->x - (othersquare->size / 2)))
{
return (false);
}
return (true);
bool Square::bordertangent (const Square& otherSquare)const {
};
测试程序
#include "Square.h"
#include <iostream>
using namespace std;
int main() {
Square sq1(0, 0, 10);
Square sq2(1, 1, 10);
if(sq1.isExternal(sq2)) {
cout<<"Square 1 is external to square 2"<<endl;
}
if(sq1.contains(sq2){
cout<<"Square 1 contains square 2"<<endl;
return 0;
}
我是否应该将其包含在头文件中以获得坐标的 x 和 y 以及大小?
double getX( ) const { return x; }
double getY( ) const { return y; }
double getSize( ) const { return size; }