joro_thexfiles

Messages_Manager

Aug 4th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.62 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Messages_Manager
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var sentMessages = new Dictionary<string, int>();
  12.             var receivedMessages = new Dictionary<string, int>();
  13.  
  14.             int capacity = int.Parse(Console.ReadLine());
  15.  
  16.             while (true)
  17.             {
  18.                 string text = Console.ReadLine();
  19.  
  20.                 if (text == "Statistics")
  21.                 {
  22.                     break;
  23.                 }
  24.                 else
  25.                 {
  26.                     string[] data = text
  27.                         .Split("=", StringSplitOptions.RemoveEmptyEntries);
  28.  
  29.                     string command = data[0];
  30.                     string name = data[1];
  31.  
  32.                     if (command == "Add")
  33.                     {
  34.                         int sent = int.Parse(data[2]);
  35.                         int receive = int.Parse(data[3]);
  36.  
  37.                         if (!sentMessages.ContainsKey(name))
  38.                         {
  39.                             sentMessages[name] = sent;
  40.                             receivedMessages[name] = receive;
  41.                         }
  42.                     }
  43.                     else if (command == "Message")
  44.                     {
  45.                         string receiveName = data[2];
  46.  
  47.                         if (sentMessages.ContainsKey(name) & receivedMessages.ContainsKey(receiveName))
  48.                         {
  49.                             sentMessages[name]++;
  50.  
  51.                             if ((sentMessages[name] + receivedMessages[name]) >= capacity)
  52.                             {
  53.                                 sentMessages.Remove(name);
  54.                                 receivedMessages.Remove(name); //sentMessages[name] = 0;
  55.                                 Console.WriteLine($"{name} reached the capacity!");
  56.                             }
  57.  
  58.                             receivedMessages[receiveName]++;
  59.  
  60.                             if ((receivedMessages[receiveName] + sentMessages[receiveName]) >= capacity)
  61.                             {
  62.                                 sentMessages.Remove(receiveName);
  63.                                 receivedMessages.Remove(receiveName);
  64.                                 Console.WriteLine($"{receiveName} reached the capacity!");
  65.                             }
  66.                         }
  67.                     }
  68.                     else if (command == "Empty")
  69.                     {
  70.                         if (sentMessages.ContainsKey(name))
  71.                         {
  72.                             sentMessages.Remove(name);
  73.                             receivedMessages.Remove(name);
  74.                         }
  75.                         else if (name == "All")
  76.                         {
  77.                             sentMessages.Clear();
  78.                             receivedMessages.Clear();
  79.                         }
  80.                     }
  81.                 }
  82.             }
  83.  
  84.             receivedMessages = receivedMessages
  85.                 .OrderByDescending(x => x.Value)
  86.                 .ThenBy(x => x.Key)
  87.                 .ToDictionary(x => x.Key, y => y.Value);
  88.  
  89.             Console.WriteLine($"Users count: {sentMessages.Count}");
  90.  
  91.             foreach (var kvp in receivedMessages)
  92.             {
  93.                 string currentUsername = kvp.Key;
  94.  
  95.                 int currentSentMessages = sentMessages[currentUsername];
  96.  
  97.                 int totalMessages = currentSentMessages + kvp.Value;
  98.  
  99.                 Console.WriteLine($"{kvp.Key} - {totalMessages}");
  100.             }
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment