Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Linq;
  5.  
  6. namespace SelfPreparationDSA2
  7. {
  8. public class Order: IComparable<Order>
  9. {
  10. public string Name { get; set; }
  11. public string Consumer { get; set; }
  12. public decimal Price { get; set; }
  13.  
  14. public int CompareTo(Order other)
  15. {
  16. var result = this.Name.CompareTo(other.Name);
  17. if (result == 0)
  18. {
  19. result = this.Consumer.CompareTo(other.Consumer);
  20.  
  21. if (result == 0)
  22. {
  23. result = this.Price.CompareTo(other.Price);
  24. }
  25. }
  26. return result;
  27. }
  28. }
  29.  
  30. class Program
  31. {
  32. static void Main()
  33. {
  34. var NumberOfOrders = int.Parse(Console.ReadLine());
  35. var ResultInfo = new List<string>();
  36. var OrderByPrice = new SortedSet<Order>();
  37. var ConsumersList = new Dictionary<string, SortedSet<Order>>();
  38.  
  39. for (int i = 0; i < NumberOfOrders; i++)
  40. {
  41. var currentOrder = Console.ReadLine();
  42.  
  43. var splitOrder = currentOrder.Split();
  44.  
  45. if (splitOrder[0] == "AddOrder")
  46. {
  47. ResultInfo.Add("Order added");
  48.  
  49. currentOrder = currentOrder.Remove(0, 9);
  50.  
  51. splitOrder = currentOrder.Split(';');
  52.  
  53. var order = new Order()
  54. {
  55. Name = splitOrder[0],
  56. Price = decimal.Parse(splitOrder[1]),
  57. Consumer = splitOrder[2]
  58. };
  59.  
  60. OrderByPrice.Add(order);
  61.  
  62. if (ConsumersList.ContainsKey(order.Consumer))
  63. {
  64. ConsumersList[order.Consumer].Add(order);
  65. }
  66.  
  67. else
  68. {
  69. ConsumersList[order.Consumer] = new SortedSet<Order> { order };
  70. }
  71. }
  72.  
  73. if (splitOrder[0] == "DeleteOrders")
  74. {
  75. currentOrder = currentOrder.Remove(0, 13);
  76.  
  77. if (ConsumersList.ContainsKey(currentOrder) && ConsumersList[currentOrder].Count != 0)
  78. {
  79. ResultInfo.Add($"{ConsumersList[currentOrder].Count} orders deleted");
  80. ConsumersList[currentOrder].Clear();
  81. OrderByPrice.RemoveWhere(x => x.Consumer == currentOrder);
  82. }
  83. else
  84. {
  85. ResultInfo.Add($"No orders found");
  86. }
  87.  
  88. }
  89.  
  90. if (splitOrder[0] == "FindOrdersByConsumer")
  91. {
  92. currentOrder = currentOrder.Remove(0, 21);
  93.  
  94. if (ConsumersList.ContainsKey(currentOrder) && ConsumersList[currentOrder].Count != 0)
  95. {
  96. foreach (var item in ConsumersList[currentOrder])
  97. {
  98. ResultInfo.Add("{" + $"{item.Name};{item.Consumer};{item.Price:f2}" + "}");
  99. }
  100. }
  101. else
  102. {
  103. ResultInfo.Add("No orders found");
  104. }
  105. }
  106.  
  107. if (splitOrder[0] == "FindOrdersByPriceRange")
  108. {
  109. currentOrder = currentOrder.Remove(0, 22);
  110.  
  111. splitOrder = currentOrder.Split(';');
  112.  
  113. var min = decimal.Parse(splitOrder[0]);
  114. var max = decimal.Parse(splitOrder[1]);
  115.  
  116. var counter = 0;
  117. foreach (var item in OrderByPrice)
  118. {
  119.  
  120. if (item.Price >= min && item.Price <= max)
  121. {
  122. ResultInfo.Add("{" + $"{item.Name};{item.Consumer};{item.Price:f2}" + "}");
  123. counter++;
  124. }
  125.  
  126. }
  127. if (counter == 0)
  128. {
  129. ResultInfo.Add("No orders found");
  130. }
  131. }
  132.  
  133. }
  134.  
  135. foreach (var item in ResultInfo)
  136. {
  137. Console.WriteLine(item);
  138. }
  139. }
  140. }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement