본문 바로가기

C++ 언어/연습문제

C++ 언어 연습문제9

[문제]

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