Menu
Coddy logo textTech

요약: Typedef와 열거형(Enum) 실습

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

challenge icon

챌린지

쉬움

enumtypedef를 결합하여 간단한 기하학적 도형 계산기를 만드는 C 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 다음 상수를 정확히 이 순서대로 포함하는 ShapeType이라는 이름의 enum을 정의합니다:
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. typedef를 사용하여 enum ShapeType에 대한 Shape라는 이름의 타입 별칭(type alias)을 생성합니다.
  3. 다음과 같은 calculateArea 함수를 작성합니다:
    • shape라는 이름의 Shape 매개변수를 받습니다.
    • dimension1dimension2라는 이름의 두 float 매개변수를 받습니다.
    • 계산된 면적을 나타내는 float 값을 반환합니다.
    • switch 문을 사용하여 도형 유형에 따라 면적을 계산합니다:
      • CIRCLE의 경우: 면적 = 3.14159 * dimension1 * dimension1 (dimension1은 반지름)
      • RECTANGLE의 경우: 면적 = dimension1 * dimension2 (가로 × 세로)
      • TRIANGLE의 경우: 면적 = 0.5 * dimension1 * dimension2 (0.5 × 밑변 × 높이)
  4. 다음과 같은 printShapeInfo 함수를 작성합니다:
    • shape라는 이름의 Shape 매개변수를 받습니다.
    • 반환 값은 없습니다 (void).
    • switch 문을 사용하여 도형 정보를 출력합니다:
      • CIRCLE의 경우: Shape: Circle을 출력합니다.
      • RECTANGLE의 경우: Shape: Rectangle을 출력합니다.
      • TRIANGLE의 경우: Shape: Triangle을 출력합니다.
  5. main 함수에서 다음을 수행합니다:
    • selectedShape라는 이름의 Shape 타입 변수를 선언합니다.
    • dim1dim2라는 이름의 두 float 변수를 선언합니다.
    • 입력으로부터 세 개의 값을 읽습니다: 도형 선택을 나타내는 정수(0, 1, 또는 2)와 두 개의 float 차원 값.
    • 입력에 따라 selectedShape에 해당하는 enum 값을 할당합니다.
    • 차원 값을 dim1dim2에 할당합니다.
    • selectedShape를 인자로 하여 printShapeInfo 함수를 호출합니다.
    • 다음과 같은 정확한 형식으로 차원을 출력합니다: Dimensions: [dim1] [dim2]
    • calculateArea 함수를 호출하여 면적을 계산합니다.
    • 계산된 면적을 소수점 둘째 자리까지 정확히 다음 형식으로 출력합니다: Area: [area]
    • 계산된 면적에 따라 도형 카테고리를 결정하고 출력합니다:
      • 면적이 10.0 미만인 경우: Category: Small을 출력합니다.
      • 면적이 10.0 이상 50.0 이하인 경우: Category: Medium을 출력합니다.
      • 면적이 50.0 초과인 경우: Category: Large를 출력합니다.

이 챌린지는 enumtypedef가 함께 작동하는 강력한 조합을 보여줍니다. typedefenum ShapeType을 반복해서 쓰는 대신 Shape라는 깔끔하고 가독성 좋은 타입 이름을 만들어 줍니다. enum 상수는 switch 문을 자체 문서화(self-documenting)하여 각 케이스가 무엇을 나타내는지 명확하게 보여줍니다. 두 개념을 정의하고, 함수 매개변수에서 사용하며, enum 값에 의존하는 로직을 구현하는 연습을 하게 될 것입니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 enum ShapeType과 typedef를 정의하세요

// TODO: 여기에 calculateArea 함수를 구현하세요

// TODO: 여기에 printShapeInfo 함수를 구현하세요

int main() {
    // 입력 읽기
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: 아래에 코드를 작성하세요
    // selectedShape 변수를 선언하고 shapeChoice에 따라 할당하세요
    // printShapeInfo 함수를 호출하세요
    // 치수(dimensions)를 출력하세요
    // 면적을 계산하고 출력하세요
    // 카테고리를 결정하고 출력하세요
    
    return 0;
}

Logic & Flow의 모든 레슨