복습: 구조체 배열
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 62번째.
챌린지
쉬움구조체 배열을 사용하여 제품 인벤토리 시스템을 관리하는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 다음 멤버를 포함하는
Product라는 이름의struct를 정의합니다:- 크기가 30인 문자 배열
name - 부동 소수점 수
price - 정수
stock
- 크기가 30인 문자 배열
- 다음과 같은
findMostExpensive함수를 작성합니다:struct Product배열과 정수size를 매개변수로 받습니다- 가격이 가장 높은 제품의 인덱스를 나타내는 정수를 반환합니다
- 루프를 사용하여 모든 제품을 순회하며 가격을 비교합니다
- 최고 가격을 가진 첫 번째 제품의 인덱스를 반환합니다
- 다음과 같은
calculateTotalValue함수를 작성합니다:struct Product배열과 정수size를 매개변수로 받습니다- 전체 인벤토리 가치를 나타내는 부동 소수점 수를 반환합니다
- 각 제품의 (가격 × 재고)를 합산하여 총 가치를 계산합니다
- 다음과 같은
findLowStock함수를 작성합니다:struct Product배열, 정수size, 그리고 정수threshold를 매개변수로 받습니다- 재고가 임계값(threshold) 미만인 제품의 개수를 나타내는 정수를 반환합니다
- 루프를 사용하여 재고가 임계값보다 작은 제품의 수를 셉니다
- 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;
}