vovanhik_24

57

Aug 12th, 2025 (edited)
480
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ArmyTransfer
  6. {
  7.     public class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             SoldierService service = new SoldierService();
  12.             service.Run();
  13.         }
  14.     }
  15.  
  16.     public class Soldier
  17.     {
  18.         public Soldier(string name)
  19.         {
  20.             Name = name;
  21.         }
  22.  
  23.         public string Name { get; private set; }
  24.     }
  25.  
  26.     public class SoldierCreator
  27.     {
  28.         public List<Soldier> CreateFirstSquad()
  29.         {
  30.             return new List<Soldier>
  31.             {
  32.                 new Soldier("Белов Иван"),
  33.                 new Soldier("Буров Петр"),
  34.                 new Soldier("Борисов Алексей"),
  35.                 new Soldier("Иванов Сергей"),
  36.                 new Soldier("Быков Артем"),
  37.                 new Soldier("Петров Николай"),
  38.                 new Soldier("Кузнецов Андрей"),
  39.             };
  40.         }
  41.  
  42.         public List<Soldier> CreateSecondSquad()
  43.         {
  44.             return new List<Soldier>
  45.             {
  46.                 new Soldier("Баранов Дмитрий"),
  47.                 new Soldier("Васильев Павел"),
  48.                 new Soldier("Морозов Артем"),
  49.             };
  50.         }
  51.     }
  52.  
  53.     public class SoldierService
  54.     {
  55.         private const string TransferLetter = "Б";
  56.         private List<Soldier> _firstSquad;
  57.         private List<Soldier> _secondSquad;
  58.  
  59.         public SoldierService()
  60.         {
  61.             SoldierCreator creator = new SoldierCreator();
  62.             _firstSquad = creator.CreateFirstSquad();
  63.             _secondSquad = creator.CreateSecondSquad();
  64.         }
  65.  
  66.         public void Run()
  67.         {
  68.             const string CommandToShowSquads = "1";
  69.             const string CommandToTransfer = "2";
  70.             const string CommandToExit = "3";
  71.  
  72.             bool isRunning = true;
  73.  
  74.             while (isRunning)
  75.             {
  76.                 Console.Clear();
  77.                 Console.WriteLine("Меню:");
  78.                 Console.WriteLine($"{CommandToShowSquads}. Показать состав отрядов");
  79.                 Console.WriteLine($"{CommandToTransfer}. Перевести бойцов с фамилией на 'Б' из 1-го отряда во 2-й");
  80.                 Console.WriteLine($"{CommandToExit}. Выход");
  81.                 Console.Write("Выберите пункт меню: ");
  82.  
  83.                 string userInput = Console.ReadLine();
  84.  
  85.                 switch (userInput)
  86.                 {
  87.                     case CommandToShowSquads:
  88.                         ShowAllSquads();
  89.                         break;
  90.  
  91.                     case CommandToTransfer:
  92.                         TransferSoldiers();
  93.                         break;
  94.  
  95.                     case CommandToExit:
  96.                         isRunning = false;
  97.                         break;
  98.  
  99.                     default:
  100.                         Console.WriteLine("Некорректный ввод. Попробуйте снова.");
  101.                         break;
  102.                 }
  103.  
  104.                 if (isRunning)
  105.                 {
  106.                     Pause();
  107.                 }
  108.             }
  109.         }
  110.  
  111.         private void ShowSquad(List<Soldier> squad, string header)
  112.         {
  113.             Console.WriteLine("\n" + header);
  114.  
  115.             if (squad.Count == 0)
  116.             {
  117.                 Console.WriteLine("Список пуст.");
  118.             }
  119.             else
  120.             {
  121.                 foreach (Soldier soldier in squad)
  122.                 {
  123.                     Console.WriteLine(soldier.Name);
  124.                 }
  125.             }
  126.         }
  127.  
  128.         private void ShowAllSquads()
  129.         {
  130.             ShowSquad(_firstSquad, "Первый отряд:");
  131.             ShowSquad(_secondSquad, "Второй отряд:");
  132.         }
  133.  
  134.         private void TransferSoldiers()
  135.         {
  136.             List<Soldier> toTransfer = _firstSquad.Where(soldier => soldier.Name.StartsWith(TransferLetter, StringComparison.OrdinalIgnoreCase)).ToList();
  137.  
  138.             if (toTransfer.Count == 0)
  139.             {
  140.                 Console.WriteLine("\nНет бойцов для перевода.");
  141.             }
  142.             else
  143.             {
  144.                 _firstSquad = _firstSquad.Except(toTransfer).ToList();
  145.                 _secondSquad = _secondSquad.Concat(toTransfer).ToList();
  146.  
  147.                 Console.WriteLine($"\nПереведено бойцов: {toTransfer.Count}");
  148.             }
  149.         }
  150.  
  151.         private void Pause()
  152.         {
  153.             Console.WriteLine("\nНажмите любую клавишу для продолжения...");
  154.             Console.ReadKey();
  155.         }
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment