Menu
CoddyTech

Ôn tập: Mảng các struct

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 62 trên 63.

challenge icon

Thử thách

Dễ

Tạo một chương trình C quản lý hệ thống kiểm kê sản phẩm bằng mảng các struct. Chương trình cần:

  1. Định nghĩa một struct có tên Product với các thành viên sau:
    • Một mảng ký tự name có kích thước 30
    • Một số thực price
    • Một số nguyên stock
  2. Viết hàm có tên findMostExpensive để:
    • Nhận một mảng struct Product và một số nguyên size làm tham số
    • Trả về một số nguyên biểu thị chỉ số của sản phẩm có giá cao nhất
    • Dùng vòng lặp để duyệt qua tất cả sản phẩm và so sánh giá của chúng
    • Trả về chỉ số của sản phẩm đầu tiên có giá cao nhất được tìm thấy
  3. Viết hàm có tên calculateTotalValue để:
    • Nhận một mảng struct Product và một số nguyên size làm tham số
    • Trả về một số thực biểu thị tổng giá trị hàng tồn kho
    • Tính tổng giá trị bằng cách cộng (giá × số lượng tồn kho) của từng sản phẩm
  4. Viết hàm có tên findLowStock để:
    • Nhận một mảng struct Product, một số nguyên size và một số nguyên threshold làm tham số
    • Trả về một số nguyên biểu thị số lượng sản phẩm có lượng tồn kho thấp hơn ngưỡng
    • Dùng vòng lặp để đếm số sản phẩm có lượng tồn kho nhỏ hơn giá trị ngưỡng
  5. Trong hàm main:
    • Tạo một mảng gồm 3 struct Product có tên inventory
    • Nhập dữ liệu cho từng sản phẩm theo thứ tự sau: tên, giá, lượng tồn kho
    • Đưa dữ liệu đầu vào vào mảng
    • In thông tin của từng sản phẩm theo đúng định dạng sau: Product [index]: [name] - Price: [price], Stock: [stock]
    • Gọi hàm findMostExpensive và in kết quả theo đúng định dạng sau: Most expensive product: [name]
    • Gọi hàm calculateTotalValue và in kết quả với đúng 2 chữ số thập phân theo định dạng sau: Total inventory value: [total_value]
    • Nhập một số nguyên biểu thị ngưỡng lượng tồn kho thấp
    • Gọi hàm findLowStock với ngưỡng đó và in kết quả theo đúng định dạng sau: Products with low stock: [count]
    • Kiểm tra xem sản phẩm có giá cao nhất có lượng tồn kho lớn hơn 10 hay không:
      • Nếu có: in Most expensive product is well stocked
      • Nếu không: in Most expensive product needs restocking

Thử thách này kiểm tra khả năng làm việc với mảng các struct, triển khai các hàm xử lý mảng struct, cũng như thực hiện nhiều phép tính và so sánh trên dữ liệu có cấu trúc. Bạn sẽ luyện tập cách truy cập phần tử mảng struct bằng chỉ số, thiết kế hàm để xử lý dữ liệu và kết hợp nhiều thao tác để phân tích thông tin hàng tồn kho.

Tự làm thử

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

// TODO: Định nghĩa struct Product ở đây

// TODO: Triển khai hàm findMostExpensive ở đây

// TODO: Triển khai hàm calculateTotalValue ở đây

// TODO: Triển khai hàm findLowStock ở đây

int main() {
    // Tạo mảng gồm 3 sản phẩm
    struct Product inventory[3];
    
    // Đọc đầu vào cho từng sản phẩm
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO: In ra thông tin của từng sản phẩm
    
    // TODO: Tìm và in ra sản phẩm đắt nhất
    
    // TODO: Tính và in ra tổng giá trị hàng tồn kho
    
    // Đọc ngưỡng tồn kho thấp
    int threshold;
    scanf("%d", &threshold);
    
    // TODO: Tìm và in ra các sản phẩm có tồn kho thấp
    
    // TODO: Kiểm tra sản phẩm đắt nhất có đủ hàng tồn kho hay không
    
    return 0;
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online