Menu
Coddy logo textTech

복습: 구조체 배열

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

challenge icon

챌린지

쉬움

구조체 배열을 사용하여 제품 인벤토리 시스템을 관리하는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음 멤버를 포함하는 Product라는 이름의 struct를 정의합니다:
    • 크기가 30인 문자 배열 name
    • 부동 소수점 수 price
    • 정수 stock
  2. 다음과 같은 findMostExpensive 함수를 작성합니다:
    • struct Product 배열과 정수 size를 매개변수로 받습니다
    • 가격이 가장 높은 제품의 인덱스를 나타내는 정수를 반환합니다
    • 루프를 사용하여 모든 제품을 순회하며 가격을 비교합니다
    • 최고 가격을 가진 첫 번째 제품의 인덱스를 반환합니다
  3. 다음과 같은 calculateTotalValue 함수를 작성합니다:
    • struct Product 배열과 정수 size를 매개변수로 받습니다
    • 전체 인벤토리 가치를 나타내는 부동 소수점 수를 반환합니다
    • 각 제품의 (가격 × 재고)를 합산하여 총 가치를 계산합니다
  4. 다음과 같은 findLowStock 함수를 작성합니다:
    • struct Product 배열, 정수 size, 그리고 정수 threshold를 매개변수로 받습니다
    • 재고가 임계값(threshold) 미만인 제품의 개수를 나타내는 정수를 반환합니다
    • 루프를 사용하여 재고가 임계값보다 작은 제품의 수를 셉니다
  5. main 함수에서:
    • inventory라는 이름의 3개의 struct Product 배열을 생성합니다
    • 각 제품에 대해 이름, 가격, 재고 순서로 입력을 읽습니다
    • 입력 데이터로 배열을 채웁니다
    • 각 제품의 정보를 다음 형식으로 출력합니다: Product [index]: [name] - Price: [price], Stock: [stock]
    • findMostExpensive 함수를 호출하고 결과를 다음 형식으로 출력합니다: Most expensive product: [name]
    • calculateTotalValue 함수를 호출하고 결과를 소수점 둘째 자리까지 다음 형식으로 출력합니다: Total inventory value: [total_value]
    • 낮은 재고 임계값을 나타내는 정수를 읽습니다
    • 임계값과 함께 findLowStock 함수를 호출하고 결과를 다음 형식으로 출력합니다: Products with low stock: [count]
    • 가장 비싼 제품의 재고가 10보다 큰지 확인합니다:
      • 맞다면: Most expensive product is well stocked를 출력합니다
      • 아니라면: Most expensive product needs restocking을 출력합니다

이 챌린지는 구조체 배열을 다루고, 구조체 배열을 처리하는 함수를 구현하며, 구조화된 데이터에 대해 다양한 계산 및 비교를 수행하는 능력을 테스트합니다. 구조체를 사용한 배열 인덱싱, 데이터 처리를 위한 함수 설계, 그리고 인벤토리 정보를 분석하기 위해 여러 작업을 결합하는 연습을 하게 됩니다.

직접 해보기

#include <stdio.h>
#include <string.h>

// TODO: 여기에 Product 구조체를 정의하세요

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

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

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

int main() {
    // 3개의 제품 배열 생성
    struct Product inventory[3];
    
    // 각 제품에 대한 입력 읽기
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO: 각 제품의 정보를 출력하세요
    
    // TODO: 가장 비싼 제품을 찾아 출력하세요
    
    // TODO: 전체 재고 가치를 계산하고 출력하세요
    
    // 재고 부족 기준 수치 읽기
    int threshold;
    scanf("%d", &threshold);
    
    // TODO: 재고가 부족한 제품을 찾아 출력하세요
    
    // TODO: 가장 비싼 제품의 재고가 충분한지 확인하세요
    
    return 0;
}

Logic & Flow의 모든 레슨