Advertisement
MeliDragon

Untitled

May 3rd, 2023
637
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.70 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace InventoryManager
  7. {
  8.     public class Program
  9.     {
  10.         static void Main()
  11.         {
  12.             List<Market> marcetInventar = new List<Market>();
  13.             Dictionary<string, List<Tuple<double, string>>> storage = new Dictionary<string, List<Tuple<double, string>>>();
  14.             HashSet<string> names = new HashSet<string>();
  15.             HashSet<string> types = new HashSet<string>();
  16.             StringBuilder output = new StringBuilder();
  17.  
  18.             string input = Console.ReadLine();
  19.             while (input  != "end")
  20.             {
  21.                 var inputTokens = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
  22.                 string command = inputTokens[0];
  23.                 if (command == "add")
  24.                 {
  25.                     string name = inputTokens[1];
  26.  
  27.                     if (names.Contains(name))
  28.                     {
  29.                         output.AppendLine($"Error: Item {name} already exists");
  30.                         input = Console.ReadLine();
  31.                         continue;
  32.                     }
  33.  
  34.                     double price = double.Parse(inputTokens[2]);
  35.                     string type = inputTokens[3];
  36.  
  37.                     var product = new Market(name, price, type);
  38.                     marcetInventar.Add(product);
  39.                     names.Add(name);
  40.                     types.Add(type);
  41.  
  42.                     if (!storage.ContainsKey(type))
  43.                     {
  44.                         storage[type] = new List<Tuple<double, string>>();
  45.                     }
  46.  
  47.                     var currentTuple = new Tuple<double, string>(price, name);
  48.                     storage[type].Add(currentTuple);
  49.  
  50.                     output.AppendLine($"Ok: Item {name} added successfully");
  51.                 }
  52.                 else
  53.                 {
  54.  
  55.                     if (inputTokens[2] == "type")
  56.                     {
  57.                         var searchedType = inputTokens[3];
  58.                         if (!types.Contains(searchedType))
  59.                         {
  60.                             output.AppendLine($"Error: Type {searchedType} does not exist");
  61.                             input = Console.ReadLine();
  62.                             continue;
  63.                         }
  64.                         else
  65.                         {
  66.                             var currentTypeList = storage[searchedType]
  67.                                 .OrderBy(x => x.Item1)
  68.                                 .ThenBy(x => x.Item2)
  69.                                 .Take(10)
  70.                                 .Select(x => $"{x.Item2}({x.Item1:f2})")
  71.                                 .ToArray();
  72.  
  73.                             output.AppendLine($"Ok: {string.Join(", ", currentTypeList)}");
  74.                         }
  75.                     }
  76.                     else if (inputTokens.Count() == 7)
  77.                     {
  78.                         double minPrice = double.Parse(inputTokens[4]);
  79.                         double maxPrice = double.Parse(inputTokens[6]);
  80.  
  81.                         var priceRangeSortedInvetory = marcetInventar
  82.                             .Where(x => x.ItemPrice >= minPrice && x.ItemPrice <= maxPrice)
  83.                             .OrderBy(x => x.ItemPrice)
  84.                             .Take(10)
  85.                             .OrderBy(x => x.ItemPrice)
  86.                             .ThenBy(x => x.ItemName)
  87.                             .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
  88.                             .ToArray();
  89.  
  90.                         output.AppendLine($"Ok: {string.Join(", ", priceRangeSortedInvetory)}");
  91.                     }
  92.                     else
  93.                     {
  94.                         var price = double.Parse(inputTokens[4]);
  95.                         if (inputTokens.Contains("to"))
  96.                         {
  97.                             var maxPriceSortedInventory = marcetInventar
  98.                                 .Where(x => x.ItemPrice <= price)
  99.                                 .OrderBy(x => x.ItemPrice)
  100.                                 .Take(10)
  101.                                 .OrderBy(x => x.ItemPrice)
  102.                                 .ThenBy(x => x.ItemName)
  103.                                 .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
  104.                                 .ToArray();
  105.                             output.AppendLine($"Ok: {string.Join(", ", maxPriceSortedInventory)}");
  106.                         }
  107.                         else
  108.                         {
  109.                             var maxPriceSortedInventory = marcetInventar
  110.                                 .Where(x => x.ItemPrice >= price)
  111.                                 .OrderBy(x => x.ItemPrice)
  112.                                 .Take(10)
  113.                                 .OrderBy(x => x.ItemPrice)
  114.                                 .ThenBy(x => x.ItemName)
  115.                                 .Select(x => $"{x.ItemName}({x.ItemPrice:f2})")
  116.                                 .ToArray();
  117.                             output.AppendLine($"Ok: {string.Join(", ", maxPriceSortedInventory)}");
  118.                         }
  119.                     }
  120.                 }
  121.  
  122.                 input = Console.ReadLine();
  123.             }
  124.             Console.WriteLine(output.ToString());
  125.         }
  126.     }
  127.  
  128.     public class Market
  129.     {
  130.         public Market(string itemName, double price, string itemType)
  131.         {
  132.             ItemName = itemName;
  133.             ItemPrice = price;
  134.             ItemType = itemType;
  135.         }
  136.         public string ItemName { get; set; }
  137.  
  138.         public string ItemType { get; set; }
  139.  
  140.         public double ItemPrice { get; set; }
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement