Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.85 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace P09_TeamworkProjects
  8. {
  9.     class P09_TeamworkProjects
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             List<Team> teams = GetTeams();
  14.  
  15.             PrintTeams(teams);
  16.         }
  17.  
  18.         static void PrintTeams(List<Team> teams)
  19.         {
  20.             //var printTeams = teams
  21.             //    .Where(mc => mc.Members.Count > 0)
  22.             //    .ToList();
  23.             foreach (var team in teams)
  24.             {
  25.                 var members = team.Members;
  26.  
  27.                 if (members.Count == 0)
  28.                 {
  29.                     continue;
  30.                 }
  31.  
  32.                 Console.WriteLine($"{team.Name}");
  33.                 Console.WriteLine($"- {team.Creator}");
  34.  
  35.                 members = members.OrderBy(n => n).ToList();
  36.  
  37.                 foreach (var member in members)
  38.                 {
  39.                     Console.WriteLine($"-- {member}");
  40.                 }
  41.             }
  42.  
  43.             var teamsForDisband = teams.Where(t => t.Members.Count == 0).OrderBy(t => t.Name).ToList();
  44.  
  45.             Console.WriteLine("Teams to disband:");
  46.             foreach (var teamDisband in teamsForDisband)
  47.             {
  48.                 Console.WriteLine($"{teamDisband.Name}");
  49.             }
  50.         }
  51.  
  52.         private static List<Team> GetTeams()
  53.         {
  54.             List<Team> teams = CreateTeams();
  55.             teams = AddMembers(teams);
  56.             teams = teams
  57.                 .OrderByDescending(mc => mc.Members.Count)
  58.                 .ThenBy(mn => mn.Members)
  59.                 .ToList();
  60.             return teams;
  61.         }
  62.  
  63.         static List<Team> AddMembers(List<Team> teams)
  64.         {
  65.             var inputLine = Console.ReadLine();
  66.  
  67.             while (inputLine != "end of assignment")
  68.             {
  69.                 var memberTeam = inputLine.Split(new char[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries);
  70.                 var currentMember = memberTeam[0];
  71.                 var currentTeam = memberTeam[1];
  72.  
  73.                 var itemTeam = teams.FirstOrDefault(t => t.Name == currentTeam);
  74.  
  75.                 if (itemTeam == null)
  76.                 {
  77.                     Console.WriteLine($"Team {currentTeam} does not exist!");
  78.                     inputLine = Console.ReadLine();
  79.                     continue;
  80.                 }
  81.  
  82.                 //prowerka dali w spisyka s otbori syzdatelq ne e tekushtiq user
  83.                 var itemCreator = teams.Any(t => t.Creator == currentMember);
  84.  
  85.                 //prowerka w celia spisak s otbori ima li go tekushtia user w nqkoj drug otbor
  86.                 var itemMember = teams.Any(t => t.Members.Contains(currentMember));
  87.  
  88.                 if (itemCreator || itemMember)
  89.                 {
  90.                     Console.WriteLine($"Member {currentMember} cannot join team {currentTeam}!");
  91.                     inputLine = Console.ReadLine();
  92.                     continue;
  93.                 }
  94.  
  95.                 itemTeam.Members.Add(currentMember);
  96.                 inputLine = Console.ReadLine();
  97.             }
  98.  
  99.             return teams;
  100.         }
  101.  
  102.         static List<Team> CreateTeams()
  103.         {
  104.             List<Team> teams = new List<Team>();
  105.  
  106.             var teamsCount = int.Parse(Console.ReadLine());
  107.             for (int i = 0; i < teamsCount; i++)
  108.             {
  109.                 var inputLine = Console.ReadLine().Split('-');
  110.                 var currentTeamCreator = inputLine[0];
  111.                 var currentTeamName = inputLine[1];
  112.  
  113.                 List<string> members = new List<string>();
  114.                 Team currentTeam = new Team(currentTeamName, currentTeamCreator, members);
  115.  
  116.                 var itemTeamName = teams.FirstOrDefault(t => t.Name == currentTeamName);
  117.  
  118.                 if (itemTeamName != null)
  119.                 {
  120.                     Console.WriteLine($"Team {currentTeamName} was already created!");
  121.                     continue;
  122.                 }
  123.  
  124.                 var itemCreator = teams.FirstOrDefault(t => t.Creator == currentTeamCreator);
  125.  
  126.                 if (itemCreator != null)
  127.                 {
  128.                     Console.WriteLine($"{currentTeamCreator} cannot create another team!");
  129.                     continue;
  130.                 }
  131.  
  132.                 teams.Add(currentTeam);
  133.                 Console.WriteLine($"Team {currentTeamName} has been created by {currentTeamCreator}!");
  134.             }
  135.  
  136.             return teams;
  137.         }
  138.     }
  139.  
  140.     class Team
  141.     {
  142.         public string Name { get; set; }
  143.         public string Creator { get; set; }
  144.         public List<string> Members { get; set; }
  145.  
  146.         public Team(string name, string creator, List<string> members)
  147.         {
  148.             Name = name;
  149.             Creator = creator;
  150.             Members = members;
  151.         }
  152.     }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement