YORDAN2347

05. Teamwork Projects

Feb 2nd, 2021 (edited)
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.76 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _05._TeamworkProjects
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             // 1. Read Input
  12.             int teamsCount = int.Parse(Console.ReadLine());
  13.  
  14.             // 2. Create [teamsCount] teams
  15.             List<string> teamsMembers = new List<string>();
  16.             List<Team> teams = CreateTeams(teamsCount, teamsMembers);
  17.             List<string> teamsToDisban = new List<string>();
  18.  
  19.             // 3. Add Members to teams
  20.             AddMembers(teams, teamsMembers);
  21.  
  22.             // 4. Sort Teams
  23.             teams = teams.OrderBy(order => order.Members.Count).ToList();
  24.             teams.Reverse();
  25.  
  26.             // 5. print valid teams
  27.             foreach (Team team in teams)
  28.             {
  29.                 if (team.Members.Count > 0)
  30.                 {
  31.                     team.Print();
  32.                 }
  33.                 else
  34.                 {
  35.                     teamsToDisban.Add(team.TeamName);
  36.                 }
  37.             }
  38.  
  39.             Console.WriteLine("Teams to disband:");
  40.             teamsToDisban.Sort();
  41.             foreach (var team in teamsToDisban)
  42.             {
  43.                 Console.WriteLine(team);
  44.             }
  45.         }
  46.  
  47.         private static void AddMembers(List<Team> teams, List<string> teamsMembers)
  48.         {
  49.             string input = Console.ReadLine();
  50.             while (input != "end of assignment")
  51.             {
  52.                 string[] memberInfo = input.Split("->", StringSplitOptions.RemoveEmptyEntries);
  53.                 string user = memberInfo[0];
  54.                 string team = memberInfo[1];
  55.  
  56.                 bool isTeamContains = IsTeamExists(teams, team);
  57.                 if (!isTeamContains)
  58.                 {
  59.                     Console.WriteLine($"Team {team} does not exist!");
  60.                 }
  61.                 else
  62.                 {
  63.                     if (teamsMembers.Contains(user))
  64.                     {
  65.                         Console.WriteLine($"Member {user} cannot join team {team}!");
  66.                     }
  67.                     else
  68.                     {
  69.                         teamsMembers.Add(user);
  70.                         teams = AddMember(teams, user, team);
  71.                     }
  72.                 }
  73.  
  74.                 input = Console.ReadLine();
  75.             }
  76.         }
  77.  
  78.         private static List<Team> AddMember(List<Team> teams, string user, string team)
  79.         {
  80.             for (int i = 0; i < teams.Count; i++)
  81.             {
  82.                 if (teams[i].TeamName == team)
  83.                 {
  84.                     teams[i].Members.Add(user);
  85.                 }
  86.             }
  87.  
  88.             return teams;
  89.         }
  90.  
  91.         private static List<Team> CreateTeams(int teamsCount, List<string> TeamsMembers)
  92.         {
  93.             List<Team> teams = new List<Team>(teamsCount);
  94.  
  95.             for (int i = 0; i < teamsCount; i++)
  96.             {
  97.                 // 2.1 Read input
  98.                 string[] input = Console.ReadLine()
  99.                 .Split("-", StringSplitOptions.RemoveEmptyEntries);
  100.                 string creator = input[0];
  101.                 string teamName = input[1];
  102.  
  103.                 // 2.2 Create Team
  104.                 bool isTeamContains = IsTeamExists(teams, teamName);
  105.                 if (isTeamContains)
  106.                 {
  107.                     Console.WriteLine($"Team {teamName} was already created!");
  108.                 }
  109.                 else
  110.                 {
  111.                     bool isCreatorContains = IsCreatorExists(teams, creator);
  112.                     if (isCreatorContains)
  113.                     {
  114.                         Console.WriteLine($"{creator} cannot create another team!");
  115.                     }
  116.                     else
  117.                     {
  118.                         Team newTeam = new Team(creator, teamName);
  119.                         // 2.3 Add Team to list
  120.                         teams.Add(newTeam);
  121.                         TeamsMembers.Add(creator);
  122.  
  123.                         // 2.4 Print "Team {teamName} has been created by {user}!".
  124.                         Console.WriteLine($"Team {newTeam.TeamName} has been created by {input[0]}!");
  125.                     }              
  126.                 }                
  127.             }
  128.  
  129.             return teams;
  130.         }
  131.  
  132.         private static bool IsCreatorExists(List<Team> teams, string creator)
  133.         {
  134.             bool isContains = false;
  135.             for (int i = 0; i < teams.Count; i++)
  136.             {
  137.                 if (creator == teams[i].Creator)
  138.                 {
  139.                     isContains = true;
  140.                     break;
  141.                 }
  142.             }
  143.  
  144.             return isContains;
  145.         }
  146.  
  147.         private static bool IsTeamExists(List<Team> teams, string teamName)
  148.         {
  149.             bool isContains = false;
  150.             for (int i = 0; i < teams.Count; i++)
  151.             {
  152.                 if (teamName == teams[i].TeamName)
  153.                 {
  154.                     isContains = true;
  155.                     break;
  156.                 }
  157.             }
  158.  
  159.             return isContains;
  160.         }
  161.     }
  162.  
  163.     class Team
  164.     {
  165.         public Team(string creator, string name)
  166.         {
  167.             Creator = creator;
  168.             TeamName = name;
  169.             Members = new List<string>();
  170.         }
  171.         public string TeamName { get; set; }
  172.         public string Creator { get; set; }
  173.         public List<string> Members { get; set; }
  174.  
  175.         public void Print()
  176.         {
  177.             Console.WriteLine($"{TeamName}");
  178.             Console.WriteLine($"- {Creator}");
  179.             Members.Sort();
  180.             foreach (var member in Members)
  181.             {
  182.                 Console.WriteLine($"-- {member}");
  183.             }
  184.         }
  185.     }
  186. }
  187.  
Add Comment
Please, Sign In to add comment