Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace _05._TeamworkProjects
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 1. Read Input
- int teamsCount = int.Parse(Console.ReadLine());
- // 2. Create [teamsCount] teams
- List<string> teamsMembers = new List<string>();
- List<Team> teams = CreateTeams(teamsCount, teamsMembers);
- List<string> teamsToDisban = new List<string>();
- // 3. Add Members to teams
- AddMembers(teams, teamsMembers);
- // 4. Sort Teams
- teams = teams.OrderBy(order => order.Members.Count).ToList();
- teams.Reverse();
- // 5. print valid teams
- foreach (Team team in teams)
- {
- if (team.Members.Count > 0)
- {
- team.Print();
- }
- else
- {
- teamsToDisban.Add(team.TeamName);
- }
- }
- Console.WriteLine("Teams to disband:");
- foreach (var team in teamsToDisban)
- {
- Console.WriteLine(team);
- }
- }
- private static void AddMembers(List<Team> teams, List<string> teamsMembers)
- {
- string input = Console.ReadLine();
- while (input != "end of assignment")
- {
- string[] memberInfo = input.Split("->", StringSplitOptions.RemoveEmptyEntries);
- string user = memberInfo[0];
- string team = memberInfo[1];
- bool isTeamContains = IsTeamExists(teams, team);
- if (!isTeamContains)
- {
- Console.WriteLine($"Team {team} does not exist!");
- }
- else
- {
- if (teamsMembers.Contains(user))
- {
- Console.WriteLine($"Member {user} cannot join team {team}!");
- }
- else
- {
- teamsMembers.Add(user);
- teams = AddMember(teams, user, team);
- }
- }
- input = Console.ReadLine();
- }
- }
- private static List<Team> AddMember(List<Team> teams, string user, string team)
- {
- for (int i = 0; i < teams.Count; i++)
- {
- if (teams[i].TeamName == team)
- {
- teams[i].Members.Add(user);
- }
- }
- return teams;
- }
- private static List<Team> CreateTeams(int teamsCount, List<string> TeamsMembers)
- {
- List<Team> teams = new List<Team>(teamsCount);
- for (int i = 0; i < teamsCount; i++)
- {
- // 2.1 Read input
- string[] input = Console.ReadLine()
- .Split("-", StringSplitOptions.RemoveEmptyEntries);
- string creator = input[0];
- string teamName = input[1];
- // 2.2 Create Team
- bool isTeamContains = IsTeamExists(teams, teamName);
- if (isTeamContains)
- {
- Console.WriteLine($"Team {teamName} was already created!");
- }
- else
- {
- bool isCreatorContains = IsCreatorExists(teams, creator);
- if (isCreatorContains)
- {
- Console.WriteLine($"{creator} cannot create another team!");
- }
- else
- {
- Team newTeam = new Team(creator, teamName);
- // 2.3 Add Team to list
- teams.Add(newTeam);
- TeamsMembers.Add(creator);
- // 2.4 Print "Team {teamName} has been created by {user}!".
- Console.WriteLine($"Team {newTeam.TeamName} has been created by {input[0]}!");
- }
- }
- }
- return teams;
- }
- private static bool IsCreatorExists(List<Team> teams, string creator)
- {
- bool isContains = false;
- for (int i = 0; i < teams.Count; i++)
- {
- if (creator == teams[i].Creator)
- {
- isContains = true;
- break;
- }
- }
- return isContains;
- }
- private static bool IsTeamExists(List<Team> teams, string teamName)
- {
- bool isContains = false;
- for (int i = 0; i < teams.Count; i++)
- {
- if (teamName == teams[i].TeamName)
- {
- isContains = true;
- break;
- }
- }
- return isContains;
- }
- }
- class Team
- {
- public Team(string creator, string name)
- {
- Creator = creator;
- TeamName = name;
- Members = new List<string>();
- }
- public string TeamName { get; set; }
- public string Creator { get; set; }
- public List<string> Members { get; set; }
- public void Print()
- {
- Console.WriteLine($"{TeamName}");
- Console.WriteLine($"- {Creator}");
- Members.Sort();
- foreach (var member in Members)
- {
- Console.WriteLine($"-- {member}");
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment