Работа с разными колекциями - 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(), но он не возвращает объект который нашел. Нужно писать поиск в ручную? или найдется решение по изящнее? Подскажите как это сделать.
Листинг программы
  1. class Store
  2. {
  3. SortedSet<Product> products_list;//товары на складе
  4. Queue<Client> queue; //Очередь
  5. public void sell_product()
  6. {
  7. var buyer = queue.Dequeue();
  8. foreach (var i in buyer.shopping_list)
  9. {
  10. }
  11. }
  12. }
  13. class Product
  14. {
  15. public string name { get; }
  16. public double purchase_price { get; }
  17. public uint quantity { get; }
  18. }
  19. class Client
  20. {
  21. public Stack<Product> shopping_list { get; } //Список покупок
  22. public double money { get; }
  23. }

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

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

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы