zaryana

Message Manager

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