Работа с разными колекциями - C#

Узнай цену своей работы

Формулировка задачи:

Строю по задачке модель магазина. В классе "Store" метод "sell_product" нужно сделать по принципу: 1. Берем первого клиента из очереди "queue". 2. Залазим в его список покупок "shopping_list ", берем первый. По имени товара проверяем есть ли товар на складе магазина "products_list". 3. Проверяем хватает ли товара на складе "quantity". Пример: у клиента в списке - "морковка 10 шт." а на складе есть только 5 шт. 4. Проверяем хватит ли у клиента денег "money" на покупку. (price * quantity). 5. Продаем товар, идем дальше по списку покупок. У меня возникли проблемы с этими коллекциями. У них нет индексирования. В одном foreach нельзя получить ссылки на объекты сразу 2-х коллекций. Не получается одновременно доступатся до полей 2-х объектов разных коллекций, чтобы проводить поиск из пункта 2 и проверку полей из пункта 3. У коллекции SortedSet есть метод Contains(), но он не возвращает объект который нашел. Нужно писать поиск в ручную? или найдется решение по изящнее? Подскажите как это сделать.
class Store
{
    SortedSet<Product> products_list;//товары на складе
    Queue<Client> queue;                    //Очередь
    public void sell_product()
    {
        var buyer = queue.Dequeue();
 
        foreach (var i in buyer.shopping_list)
        {
 
        }
    }
}
class Product
{
    public string name { get; }
    public double purchase_price { get; }
    public uint quantity { get; }
}
class Client
{
    public Stack<Product> shopping_list { get; }  //Список покупок
    public double money { get; }
}

Решение задачи: «Работа с разными колекциями»

textual
Листинг программы
public void sell_product()
        {
            var buyer = queue.Dequeue();
 
            foreach (var i in buyer.Shopping_list)
            {
                IEnumerable<Products> seling = products_list.Where(n => n.Name == i.Name);
                if (seling.ElementAt(0).Quantity < i.Quantity)
                    Console.WriteLine("Товар " + seling.ElementAt(0).Name + ": Нет достаточного количества на складе");
                else if (seling.ElementAt(0).Purchase_price * i.Quantity > buyer.Money)
                    Console.WriteLine("Недостаточно денег");
                else
                    Console.WriteLine("Товар продан");
            }
  }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы