Menu
Coddy logo textTech

열거형(Enum) 선언과 사용

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 56번째.

이제 enum을 정의했으므로, 해당 열거형 타입의 변수를 생성하고 의미 있는 값을 할당할 수 있습니다. 이것이 바로 열거형(enum)이 진가를 발휘하는 부분입니다. 혼란스러운 숫자 대신 서술적인 이름을 사용할 수 있기 때문입니다.

enum 타입의 변수를 선언하려면, 다른 변수를 선언할 때와 동일한 구문을 사용합니다:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

그런 다음 열거형(enum)의 명명된 상수를 사용하여 이러한 변수에 값을 할당할 수 있습니다:

today = WEDNESDAY;
weekend_day = SATURDAY;

이것을 가공되지 않은 숫자(raw numbers)를 사용하는 것과 비교해 보세요: today = 2; 그리고 weekend_day = 5;. 열거형(enum) 버전은 현재 어떤 요일을 다루고 있는지 즉시 알려주지만, 숫자는 각 값이 무엇을 나타내는지 기억해야 합니다. 이로 인해 코드가 훨씬 더 읽기 쉬워지고 오류가 발생할 가능성이 줄어듭니다.

challenge icon

챌린지

쉬움

간단한 작업 관리 시스템을 위해 enum 변수를 선언하고 사용하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음 상수를 정확히 이 순서대로 포함하는 TaskStatus라는 이름의 enum을 정의합니다:
    • PENDING
    • IN_PROGRESS
    • COMPLETED
    • CANCELLED
  2. main 함수에서:
    • enum TaskStatus 타입의 세 변수 task1, task2, task3를 선언합니다.
    • 각 작업의 상태를 나타내는 세 개의 정수(0, 1, 2 또는 3)를 입력받습니다.
    • 입력값에 따라 각 작업 변수에 해당하는 enum 값을 할당합니다:
      • 입력이 0이면, PENDING을 할당합니다.
      • 입력이 1이면, IN_PROGRESS를 할당합니다.
      • 입력이 2이면, COMPLETED를 할당합니다.
      • 입력이 3이면, CANCELLED를 할당합니다.
    • enum 값을 사용하여 각 작업의 상태를 다음의 정확한 형식으로 출력합니다:
      • "Task 1 status: %d\n"
      • "Task 2 status: %d\n"
      • "Task 3 status: %d\n"
    • 각 상태 카테고리에 속한 작업의 수를 세고 출력합니다:
      • "Pending tasks: %d\n"
      • "In progress tasks: %d\n"
      • "Completed tasks: %d\n"
      • "Cancelled tasks: %d\n"
    • 활성 작업(상태가 PENDING 또는 IN_PROGRESS인 작업)의 총 개수를 계산하고 다음의 정확한 형식으로 출력합니다: "Active tasks: %d\n"

이 챌린지는 enum 변수가 가공되지 않은 숫자 대신 의미 있는 이름을 사용하여 코드를 얼마나 더 읽기 쉽게 만드는지 보여줍니다. enum 변수 선언, 입력에 따른 enum 값 할당, 비교 연산에서 enum 상수 사용, 그리고 enum 값을 활용한 계산 수행을 연습하게 됩니다.

치트 시트

enum 타입의 변수를 선언하려면 다른 변수를 선언할 때와 동일한 구문을 사용합니다:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

enum에 정의된 명명된 상수를 사용하여 enum 변수에 값을 할당합니다:

today = WEDNESDAY;
weekend_day = SATURDAY;

원시 숫자 대신 enum 이름을 사용하면 코드를 더 읽기 쉽고 오류가 덜 발생하게 만듭니다. today = WEDNESDAY;today = 2;를 비교해 보세요. enum 버전은 현재 어떤 요일을 다루고 있는지 즉시 보여줍니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 TaskStatus 열거형(enum) 정의

int main() {
    // 세 가지 작업 상태에 대한 입력 읽기
    int status1, status2, status3;
    scanf("%d", &status1);
    scanf("%d", &status2);
    scanf("%d", &status3);
    
    // TODO: 세 개의 TaskStatus 열거형 변수 선언 (task1, task2, task3)
    
    // TODO: 입력에 따라 열거형 값 할당
    
    // TODO: 작업 상태 출력
    
    // TODO: 각 카테고리별 작업 수 계산
    
    // TODO: 활성 작업(active tasks) 수를 계산하고 출력
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨