[문제]
2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다.
typedef struct __Point
{
int xpos;
int ypos;
}Point;
위의 구조체를 기반으로 두 점의 합을 계산하는 함수를 다음의 형태로 정의하고(덧셈결과는 함수의 반환을 통해서 얻게 한다),
Point& PntAdder(const Point &p1, const Point &p2);
두 점([3,30], [70,7])을 선언하여, 위 함수를 이용한 덧셈연산을 진행하는 main 함수를 정의해보자. 단, 구조체 Point 관련 변수의 선언은 무조건 new 연산자를 이용해서 진행해야 하며, 할당된 메모리 공간의 소멸도 철저해야 한다.
[실행결과]
[73, 37]
[코드]
#include<iostream>
using namespace std;
typedef struct __Point
{
int xpos;
int ypos;
}Point;
Point& PntAdder(const Point& p1, const Point& p2);
int main()
{
Point* pptr1 = new Point;
pptr1->xpos = 3;
pptr1->ypos = 30;
Point* pptr2 = new Point;
pptr2->xpos = 70;
pptr2->ypos = 7;
Point& pref = PntAdder(*pptr1, *pptr2);
cout << "[" << pref.xpos << ", " << pref.ypos << "]" << endl;
delete pptr1;
delete pptr2;
delete& pref;
return 0;
}
Point& PntAdder(const Point& p1, const Point& p2)
{
Point* pptr = new Point;
pptr->xpos = p1.xpos + p2.xpos;
pptr->ypos = p1.ypos + p2.ypos;
return *pptr;
}
<참고>
윤성우의 열혈 C++ 프로그래밍
'C++ 언어 > 연습문제' 카테고리의 다른 글
C++ 언어 연습문제11 (0) | 2022.09.27 |
---|---|
C++ 언어 연습문제10 (0) | 2022.09.26 |
C++ 언어 연습문제8 (0) | 2022.08.08 |
C++ 언어 연습문제7 (0) | 2022.08.08 |
C++ 언어 연습문제6(R) (0) | 2022.08.02 |