[문제]
아래의 코드를 보고 생성자를 추가하여 수정하라.
조건1) 참조자를 사용할 것
조건2) 잘못된 범위에 대한 부분은 신경쓰지 말고 지울 것
<Point.h>
#ifndef __POINT_H__
#define __POINT_H__
class Point
{
private:
int x;
int y;
public:
bool InitMembers(int xpos, int ypos);
int GetX() const;
int GetY() const;
bool SetX(int xpos);
bool SetY(int ypos);
};
#endif
<Point.cpp>
#include<iostream>
#include "Point.h"
using namespace std;
bool Point::InitMembers(int xpos, int ypos)
{
if (xpos < 0 || ypos < 0) {
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
x = xpos;
y = ypos;
return true;
}
int Point::GetX() const
{
return x;
}
int Point::GetY() const
{
return y;
}
bool Point::SetX(int xpos)
{
if (xpos < 0 || xpos > 100) {
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
x = xpos;
return true;
}
bool Point::SetY(int ypos)
{
if (ypos < 0 || ypos > 100) {
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
y = ypos;
return true;
}
<Rectangle.h>
#ifndef __RECTANGLE_H__
#define __RECTANGLE_H__
#include "Point.h"
class Rectangle
{
private:
Point upLeft;
Point lowRight;
public:
bool InitMembers(const Point& ul, const Point& lr);
void ShowRecInfo() const;
};
#endif
<Rectangle.cpp>
#include<iostream>
#include"Rectangle.h"
using namespace std;
bool Rectangle::InitMembers(const Point& ul, const Point& lr)
{
if (ul.GetX() > lr.GetX() || ul.GetY() > lr.GetY()) {
cout << "잘못된 위치정보 전달" << endl;
return false;
}
upLeft = ul;
lowRight = lr;
return true;
}
void Rectangle::ShowRecInfo() const
{
cout << "좌 상단: " << '[' << upLeft.GetX() << ", ";
cout << upLeft.GetY() << ']' << endl;
cout << "우 히단: " << '[' << lowRight.GetY() << ", ";
cout << lowRight.GetY() << ']' << endl;
}
<main.cpp>
#include<iostream>
#include "Point.h"
#include "Rectangle.h"
using namespace std;
int main(void)
{
Rectangle rec(1, 1, 5, 5);
rec.ShowRecInfo();
return 0;
}
[실행 결과]
좌 상단: [1, 1]
우 하단: [5, 5]
[코드]
<Point.h>
#ifndef __POINT_H__
#define __POINT_H__
class Point
{
private:
int x;
int y;
public:
Point(const int& xpos, const int& ypos);
int GetX() const;
int GetY() const;
bool SetX(int xpos);
bool SetY(int ypos);
};
#endif
<Point.cpp>
#include<iostream>
#include "Point.h"
using namespace std;
Point::Point(const int& xpos, const int& ypos)
{
x = xpos;
y = ypos;
}
int Point::GetX() const
{
return x;
}
int Point::GetY() const
{
return y;
}
bool Point::SetX(int xpos)
{
if (xpos < 0 || xpos > 100) {
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
x = xpos;
return true;
}
bool Point::SetY(int ypos)
{
if (ypos < 0 || ypos > 100) {
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
y = ypos;
return true;
}
<Rectangle.h>
#ifndef __RECTANGLE_H__
#define __RECTANGLE_H__
#include "Point.h"
class Rectangle
{
private:
Point upLeft;
Point lowRight;
public:
Rectangle(const int& x1, const int& y1, const int& x2, const int& y2);
void ShowRecInfo() const;
};
#endif
<Rectangle.cpp>
#include<iostream>
#include"Rectangle.h"
using namespace std;
Rectangle::Rectangle(const int& x1, const int& y1, const int& x2, const int& y2)
:upLeft(x1, y1), lowRight(x2, y2)
{
}
void Rectangle::ShowRecInfo() const
{
cout << "좌 상단: " << '[' << upLeft.GetX() << ", ";
cout << upLeft.GetY() << ']' << endl;
cout << "우 히단: " << '[' << lowRight.GetY() << ", ";
cout << lowRight.GetY() << ']' << endl;
}
<참고>
윤성우의 열혈 C++ 프로그래밍
'C++ 언어 > 연습문제' 카테고리의 다른 글
C++ 언어 연습문제20 (0) | 2022.10.21 |
---|---|
C++ 언어 연습문제19 (0) | 2022.10.20 |
C++ 언어 연습문제17 (0) | 2022.10.19 |
C++ 언어 연습문제16 (0) | 2022.10.18 |
C++ 언어 연습문제15 (0) | 2022.10.14 |