Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- class Program
- {
- static void Main()
- {
- string command = Console.ReadLine();
- List<User> users = new List<User>();
- while (command != "exit")
- {
- string[] split = command.Split();
- if (split[0] == "register")
- {
- RegisteringUser(users, split);
- }
- else
- {
- SendingMessage(users, split);
- }
- command = Console.ReadLine();
- }
- string[] usernames = Console.ReadLine().Split();
- PrintingResults(users, usernames);
- }
- private static void PrintingResults(List<User> users, string[] usernames)
- {
- if (users.Find(u => u.Username == usernames[0]).ReceivedMessages.Count() == 0 && users.Find(u => u.Username == usernames[1]).ReceivedMessages.Count() == 0)
- {
- Console.WriteLine("No messages");
- }
- else
- {
- List<Message> firstUserMessages = users
- .Find(u => u.Username == usernames[1])
- .ReceivedMessages
- .Where(m => m.Sender == usernames[0])
- .ToList();
- List<Message> secondUserMessages = users
- .Find(u => u.Username == usernames[0])
- .ReceivedMessages
- .Where(m => m.Sender == usernames[1])
- .ToList();
- int smallerList = Math.Min(firstUserMessages.Count(), secondUserMessages.Count());
- int biggerList = Math.Max(firstUserMessages.Count(), secondUserMessages.Count());
- for (int i = 0; i < smallerList; i++)
- {
- Console.WriteLine($"{firstUserMessages[i].Sender}: {firstUserMessages[i].Content}");
- Console.WriteLine($"{secondUserMessages[i].Content} :{secondUserMessages[i].Sender}");
- }
- if (firstUserMessages.Count > secondUserMessages.Count)
- {
- for (int i = smallerList; i < biggerList; i++)
- {
- Console.WriteLine(($"{firstUserMessages[i].Sender}: {firstUserMessages[i].Content}"));
- }
- }
- else if (secondUserMessages.Count > firstUserMessages.Count)
- {
- for (int i = smallerList; i < biggerList; i++)
- {
- Console.WriteLine(($"{secondUserMessages[i].Sender}: {secondUserMessages[i].Content}"));
- }
- }
- }
- }
- private static void SendingMessage(List<User> users, string[] split)
- {
- string sender = split[0];
- string reciever = split[2];
- string content = string.Join(" ",split.Skip(3));
- if (users.Where(u => u.Username == sender).Count() > 0 && users.Where(u => u.Username == reciever).Count() > 0)
- {
- Message currentMessage = new Message()
- {
- Content = content,
- Sender = sender
- };
- int recieverIndex = users.IndexOf(users.Find(u => u.Username == reciever));
- users[recieverIndex].ReceivedMessages.Add(currentMessage);
- }
- }
- private static void RegisteringUser(List<User> users, string[] split)
- {
- if (users.Where(u => u.Username == split[1]).Count() == 0)
- {
- users.Add(new User() { Username = split[1], ReceivedMessages = new List<Message>() });
- }
- }
- }
- class User
- {
- public string Username { get; set; }
- public List<Message> ReceivedMessages { get; set; }
- }
- class Message
- {
- public string Content { get; set; }
- public string Sender { get; set; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement