Menu
CoddyTech

Ôn tập: Quản lý kho hàng

Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 54 trên 66.

challenge icon

Thử thách

Trung bình

Tạo một hệ thống quản lý hàng tồn kho bằng từ điển. Nhiệm vụ của bạn là triển khai phương thức ManageWarehouse để thực hiện các thao tác sau:

  1. Trước tiên, in ra tất cả mặt hàng và số lượng theo định dạng: "Item: [item], Quantity: [quantity]"
  2. Kiểm tra xem "apples" có trong kho hay không và in ra: "Apples in stock: [True/False]"
  3. Tăng số lượng "bananas" thêm 10 nếu mặt hàng này có trong kho (sửa đổi trực tiếp giá trị)
  4. Xóa mọi mặt hàng có số lượng bằng 0
  5. In ra tổng số mặt hàng riêng biệt trong kho
  6. Cuối cùng, trả về từ điển hàng tồn kho đã cập nhật

Tự làm thử

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class Program
{
    public static Dictionary<string, int> ManageWarehouse(Dictionary<string, int> inventory)
    {
        // Viết code của bạn ở đây
        
        return inventory;
    }
    
    static void Main(string[] args)
    {
        Dictionary<string, int> inventory = new Dictionary<string, int>();
        
        // Đọc dòng đầu tiên để kiểm tra xem có phải định dạng JSON không
        string firstLine = Console.ReadLine();
        
        // Kiểm tra xem đầu vào (input) có ở định dạng JSON không
        if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
        {
            try
            {
                // Xử lý đầu vào JSON
                string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Tách tại các dấu phẩy nằm ngoài dấu ngoặc kép
                string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
                string[] entries = Regex.Split(jsonContent, pattern);
                
                foreach (string entry in entries)
                {
                    // Dùng regex để trích xuất khóa (key) và giá trị (value)
                    Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
                    if (match.Success)
                    {
                        string keyMatch = match.Groups[1].Value;
                        int valueMatch = int.Parse(match.Groups[2].Value);
                        inventory.Add(keyMatch, valueMatch);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing JSON input: {ex.Message}");
                return;
            }
        }
        else
        {
            // Process traditional input format
            int n = int.Parse(firstLine);
            for (int i = 0; i < n; i++)
            {
                string[] parts = Console.ReadLine().Split(':');
                inventory.Add(parts[0], int.Parse(parts[1]));
            }
        }
        
        Dictionary<string, int> result = ManageWarehouse(inventory);
        
        // Print updated inventory
        Console.WriteLine("Updated Inventory:");
        foreach (var item in result)
        {
            Console.WriteLine($"{item.Key}: {item.Value}");
        }
    }
}

Tất cả bài học trong Logic và luồng chương trình

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