Menu
Coddy logo textTech

요약: Point Manager

Coddy C 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 11번째.

challenge icon

챌린지

쉬움

2D 좌표를 관리하는 완전한 Point 모듈을 만들어 봅시다. 이 복습 챌린지는 구조체를 객체처럼 다루는 방법, 즉 포인터를 사용하여 상태를 수정하고 const 포인터를 사용하여 읽기 전용 작업을 수행하는 등 지금까지 배운 모든 내용을 종합합니다.

다음 세 개의 파일을 생성하게 됩니다:

  • point.h: 두 개의 정수 멤버 xy를 가진 Point 구조체를 선언합니다. 또한 메서드 역할을 하는 두 개의 함수를 선언합니다:
    • point_move — Point에 대한 포인터와 두 개의 정수(dx, dy)를 인자로 받아, 이 값들을 xy에 더하여 점의 위치를 이동시킵니다.
    • 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;
}

Object Oriented Programming의 모든 레슨