요약: Typedef와 열거형(Enum) 실습
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 60번째.
챌린지
쉬움enum과 typedef를 결합하여 간단한 기하학적 도형 계산기를 만드는 C 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:
- 다음 상수를 정확히 이 순서대로 포함하는
ShapeType이라는 이름의enum을 정의합니다:CIRCLERECTANGLETRIANGLE
typedef를 사용하여enum ShapeType에 대한Shape라는 이름의 타입 별칭(type alias)을 생성합니다.- 다음과 같은
calculateArea함수를 작성합니다:shape라는 이름의Shape매개변수를 받습니다.dimension1과dimension2라는 이름의 두float매개변수를 받습니다.- 계산된 면적을 나타내는
float값을 반환합니다. switch문을 사용하여 도형 유형에 따라 면적을 계산합니다:CIRCLE의 경우: 면적 = 3.14159 * dimension1 * dimension1 (dimension1은 반지름)RECTANGLE의 경우: 면적 = dimension1 * dimension2 (가로 × 세로)TRIANGLE의 경우: 면적 = 0.5 * dimension1 * dimension2 (0.5 × 밑변 × 높이)
- 다음과 같은
printShapeInfo함수를 작성합니다:shape라는 이름의Shape매개변수를 받습니다.- 반환 값은 없습니다 (void).
switch문을 사용하여 도형 정보를 출력합니다:CIRCLE의 경우:Shape: Circle을 출력합니다.RECTANGLE의 경우:Shape: Rectangle을 출력합니다.TRIANGLE의 경우:Shape: Triangle을 출력합니다.
- main 함수에서 다음을 수행합니다:
selectedShape라는 이름의Shape타입 변수를 선언합니다.dim1과dim2라는 이름의 두float변수를 선언합니다.- 입력으로부터 세 개의 값을 읽습니다: 도형 선택을 나타내는 정수(0, 1, 또는 2)와 두 개의 float 차원 값.
- 입력에 따라
selectedShape에 해당하는 enum 값을 할당합니다. - 차원 값을
dim1과dim2에 할당합니다. selectedShape를 인자로 하여printShapeInfo함수를 호출합니다.- 다음과 같은 정확한 형식으로 차원을 출력합니다:
Dimensions: [dim1] [dim2] calculateArea함수를 호출하여 면적을 계산합니다.- 계산된 면적을 소수점 둘째 자리까지 정확히 다음 형식으로 출력합니다:
Area: [area] - 계산된 면적에 따라 도형 카테고리를 결정하고 출력합니다:
- 면적이 10.0 미만인 경우:
Category: Small을 출력합니다. - 면적이 10.0 이상 50.0 이하인 경우:
Category: Medium을 출력합니다. - 면적이 50.0 초과인 경우:
Category: Large를 출력합니다.
- 면적이 10.0 미만인 경우:
이 챌린지는 enum과 typedef가 함께 작동하는 강력한 조합을 보여줍니다. typedef는 enum 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의 모든 레슨
10열거형(Enum)과 Typedef
명명된 상수를 위한 enum열거형(Enum) 선언과 사용Switch 문에서의 열거형(Enum) 활용타입 별칭을 위한 typedef 사용구조체와 typedef요약: Typedef와 열거형(Enum) 실습