요약: Point Manager
Coddy C 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 11번째.
챌린지
쉬움2D 좌표를 관리하는 완전한 Point 모듈을 만들어 봅시다. 이 복습 챌린지는 구조체를 객체처럼 다루는 방법, 즉 포인터를 사용하여 상태를 수정하고 const 포인터를 사용하여 읽기 전용 작업을 수행하는 등 지금까지 배운 모든 내용을 종합합니다.
다음 세 개의 파일을 생성하게 됩니다:
point.h: 두 개의 정수 멤버x와y를 가진Point구조체를 선언합니다. 또한 메서드 역할을 하는 두 개의 함수를 선언합니다:point_move— Point에 대한 포인터와 두 개의 정수(dx,dy)를 인자로 받아, 이 값들을x와y에 더하여 점의 위치를 이동시킵니다.point_print— Point에 대한const포인터를 인자로 받아 좌표를 표시합니다 (이 함수는 점의 데이터를 수정해서는 안 됩니다).
POINT_H심볼을 사용하여 include guard를 적용하세요.point.c: 두 함수를 구현합니다. 어떤 함수가 (점의 데이터를 수정하기 위해) 일반 포인터가 필요하고, 어떤 함수가 (수정 없이 안전하게 읽기 위해)const포인터를 사용하는지 신중하게 생각하세요.main.c: Point를 생성하고, 이동시키고, 각 단계에서 위치를 표시합니다.
네 개의 정수 입력을 받게 됩니다: 초기 x, 초기 y, dx 값 (가로 이동 거리), 그리고 dy 값 (세로 이동 거리).
메인 파일에서 시작 좌표로 Point를 초기화하고, 초기 위치를 출력한 다음, 주어진 거리만큼 이동시키고 새로운 위치를 출력하세요.
point_print 함수는 다음 형식으로 출력해야 합니다:
Point: ({x}, {y})예를 들어, 입력값이 3, 5, 2, -1인 경우 출력은 다음과 같습니다:
Point: (3, 5)
Point: (5, 4)직접 해보기
#include <stdio.h>
#include "point.h"
int main() {
// 입력 값 읽기
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: 초기 좌표 (x, y)를 가진 Point 생성
// TODO: point_print를 사용하여 초기 위치 출력
// TODO: point_move를 사용하여 점을 (dx, dy)만큼 이동
// TODO: point_print를 사용하여 새로운 위치 출력
return 0;
}