Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace ArmyTransfer
- {
- public class Program
- {
- static void Main(string[] args)
- {
- SoldierService service = new SoldierService();
- service.Run();
- }
- }
- public class Soldier
- {
- public Soldier(string name)
- {
- Name = name;
- }
- public string Name { get; private set; }
- }
- public class SoldierCreator
- {
- public List<Soldier> CreateFirstSquad()
- {
- return new List<Soldier>
- {
- new Soldier("Белов Иван"),
- new Soldier("Буров Петр"),
- new Soldier("Борисов Алексей"),
- new Soldier("Иванов Сергей"),
- new Soldier("Быков Артем"),
- new Soldier("Петров Николай"),
- new Soldier("Кузнецов Андрей"),
- };
- }
- public List<Soldier> CreateSecondSquad()
- {
- return new List<Soldier>
- {
- new Soldier("Баранов Дмитрий"),
- new Soldier("Васильев Павел"),
- new Soldier("Морозов Артем"),
- };
- }
- }
- public class SoldierService
- {
- private const string TransferLetter = "Б";
- private List<Soldier> _firstSquad;
- private List<Soldier> _secondSquad;
- public SoldierService()
- {
- SoldierCreator creator = new SoldierCreator();
- _firstSquad = creator.CreateFirstSquad();
- _secondSquad = creator.CreateSecondSquad();
- }
- public void Run()
- {
- const string CommandToShowSquads = "1";
- const string CommandToTransfer = "2";
- const string CommandToExit = "3";
- bool isRunning = true;
- while (isRunning)
- {
- Console.Clear();
- Console.WriteLine("Меню:");
- Console.WriteLine($"{CommandToShowSquads}. Показать состав отрядов");
- Console.WriteLine($"{CommandToTransfer}. Перевести бойцов с фамилией на 'Б' из 1-го отряда во 2-й");
- Console.WriteLine($"{CommandToExit}. Выход");
- Console.Write("Выберите пункт меню: ");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandToShowSquads:
- ShowAllSquads();
- break;
- case CommandToTransfer:
- TransferSoldiers();
- break;
- case CommandToExit:
- isRunning = false;
- break;
- default:
- Console.WriteLine("Некорректный ввод. Попробуйте снова.");
- break;
- }
- if (isRunning)
- {
- Pause();
- }
- }
- }
- private void ShowSquad(List<Soldier> squad, string header)
- {
- Console.WriteLine("\n" + header);
- if (squad.Count == 0)
- {
- Console.WriteLine("Список пуст.");
- }
- else
- {
- foreach (Soldier soldier in squad)
- {
- Console.WriteLine(soldier.Name);
- }
- }
- }
- private void ShowAllSquads()
- {
- ShowSquad(_firstSquad, "Первый отряд:");
- ShowSquad(_secondSquad, "Второй отряд:");
- }
- private void TransferSoldiers()
- {
- List<Soldier> toTransfer = _firstSquad.Where(soldier => soldier.Name.StartsWith(TransferLetter, StringComparison.OrdinalIgnoreCase)).ToList();
- if (toTransfer.Count == 0)
- {
- Console.WriteLine("\nНет бойцов для перевода.");
- }
- else
- {
- _firstSquad = _firstSquad.Except(toTransfer).ToList();
- _secondSquad = _secondSquad.Concat(toTransfer).ToList();
- Console.WriteLine($"\nПереведено бойцов: {toTransfer.Count}");
- }
- }
- private void Pause()
- {
- Console.WriteLine("\nНажмите любую клавишу для продолжения...");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment