Guest User

Teamwork Projects

a guest
Dec 12th, 2019
274
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. //using System.Text;
  5.  
  6. public class Team
  7. {
  8.     public Team(string name, string creatorName)
  9.     {
  10.         TeamName = name;
  11.  
  12.         CreatorName = creatorName;
  13.  
  14.         Members = new List<string>();
  15.  
  16.     }
  17.  
  18.     public string TeamName { get; set; }
  19.  
  20.     public string CreatorName { get; set; }
  21.  
  22.     public List<string> Members { get; set; }
  23. }
  24.  
  25. public class Program
  26. {
  27.     public static void Main()
  28.     {
  29.         int teamCount = int.Parse(Console.ReadLine());
  30.  
  31.         List<Team> allTeam = new List<Team>();
  32.  
  33.         for (int i = 0; i < teamCount; i++)
  34.         {
  35.             string[] inputForTeam = Console.ReadLine()
  36.                 .Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
  37.  
  38.             string currentCreator = inputForTeam[0];
  39.             string currentTeamNeme = inputForTeam[1];
  40.  
  41.             // проверка дали тиймът вече не съществува.
  42.             // Съобщение, ако вече съществува
  43.             bool isTeamNameExist = allTeam
  44.                 .Select(x => x.TeamName).Contains(currentTeamNeme);
  45.  
  46.             bool isCreatorExist = allTeam
  47.                 .Any(x => x.CreatorName == currentCreator);
  48.  
  49.             // проверка дали Инициаторът на Тийма вече не е създал тийм.
  50.             // Съобщение, ако вече е създал
  51.  
  52.             // if-ови конструкции
  53.             if (isTeamNameExist == false && isCreatorExist == false)
  54.             {
  55.                 Team currentTeam = new Team(currentTeamNeme, currentCreator);
  56.  
  57.                 allTeam.Add(currentTeam);
  58.  
  59.                 Console.WriteLine("Team {0} has been created by {1}!", currentTeamNeme, currentCreator);
  60.             }
  61.             else if (isTeamNameExist)
  62.             {
  63.                 Console.WriteLine("Team {0} was already created!", currentTeamNeme);
  64.             }
  65.             else if (isCreatorExist)
  66.             {
  67.                 Console.WriteLine("{0} cannot create another team!", currentCreator);
  68.             }
  69.         } // end for-circle
  70.  
  71.         while (true)
  72.         {
  73.             string fensForTeam = Console.ReadLine();
  74.  
  75.             if (fensForTeam == "end of assignment")
  76.             {
  77.                 break;
  78.             }
  79.  
  80.             string[] inputAssignment = fensForTeam
  81.                 .Split(new[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries);
  82.  
  83.             string fen = inputAssignment[0];
  84.  
  85.             string ofFensTeam = inputAssignment[1];
  86.  
  87.             // Първа проверка за това, че Тиймът съществува.
  88.             // Единствената положителна проверка в алгоритъма на задачата.
  89.             bool isTeamExist = allTeam.Any(x => x.TeamName == ofFensTeam);
  90.  
  91.             // Втора проверка за това дали записващия се не инициатор
  92.             // Продължение на втората проверка -дали записващия се
  93.             // не се е записал вече в друг тийм.
  94.             bool isCreatorCheating = allTeam.Any(x => x.CreatorName == fen);
  95.             bool isAlreadyFen = allTeam.Any(x => x.Members.Contains(fen));
  96.  
  97.             if (isTeamExist && isCreatorCheating == false && isAlreadyFen == false)
  98.             {
  99.                 int indexOfTeam = allTeam
  100.                     .FindIndex(x => x.TeamName == ofFensTeam);
  101.  
  102.                 allTeam[indexOfTeam].Members.Add(fen);
  103.             }
  104.             else if (isTeamExist == false)
  105.             {
  106.                 Console.WriteLine("Team {0} does not exist!", ofFensTeam);
  107.             }
  108.             else if (isAlreadyFen || isCreatorCheating)
  109.             {
  110.                 Console.WriteLine("Member {0} cannot join team {1}!", fen, ofFensTeam);
  111.             }
  112.         } // END WHILE CIRCLE
  113.  
  114.         // Изписване на резултатите
  115.         // тиймовете с поне един член    се подреждат по азбучен ред
  116.         // и се изписват по дадения в задачата ред.
  117.  
  118.         List<Team> teamWithMember = allTeam
  119.             .Where(x => x.Members.Count > 0)
  120.             .OrderByDescending(x => x.Members.Count)
  121.             .ThenBy(x => x.TeamName)
  122.             .ToList();
  123.  
  124.         List<Team> notValidTeam = allTeam
  125.             .Where(x => x.Members.Count == 0)
  126.             .OrderBy(x => x.TeamName)
  127.             .ToList();
  128.  
  129.         foreach (var team in teamWithMember)
  130.         {
  131.             Console.WriteLine(team.TeamName);
  132.             Console.WriteLine("- " + team.CreatorName);
  133.             team.Members.Sort();
  134.             Console.WriteLine(string.Join(Environment.NewLine, team.Members.Select(x => "-- " + x)));
  135.         }
  136.  
  137.         Console.WriteLine("Teams to disband:");
  138.  
  139.         foreach (var team in notValidTeam)
  140.         {
  141.             Console.WriteLine(team.TeamName);
  142.         }
  143.     }
  144. }
RAW Paste Data