Advertisement
TeT91

ДЗ Перевод бойцов

Jun 27th, 2024 (edited)
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.61 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace CSLight
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             PersonBase personBase = new PersonBase();
  12.             personBase.ShowSoldiersInfo();
  13.         }
  14.     }
  15.  
  16.     class PersonBase
  17.     {
  18.         private List<Person> _firstArmy;
  19.         private List<Person> _secondArmy;
  20.  
  21.         public PersonBase()
  22.         {
  23.             _firstArmy = GenerateSoldiers();
  24.             _secondArmy = GenerateSoldiers();
  25.         }
  26.  
  27.         public void ShowSoldiersInfo()
  28.         {
  29.             ConsoleColor firstArmyColor = ConsoleColor.Red;
  30.             ConsoleColor secondArmyColor = ConsoleColor.Blue;
  31.             ConsoleColor filteredArmyColor = ConsoleColor.White;
  32.  
  33.  
  34.             Console.ForegroundColor = firstArmyColor;
  35.             Console.WriteLine("Все солдаты первой армии");
  36.  
  37.             ShowList(_firstArmy);
  38.  
  39.             Console.ForegroundColor = secondArmyColor;
  40.             Console.WriteLine("Все солдаты второй армии");
  41.  
  42.             ShowList(_secondArmy);
  43.  
  44.             Console.ForegroundColor = filteredArmyColor;
  45.             ChangeArmies();
  46.  
  47.             Console.ForegroundColor = firstArmyColor;
  48.             Console.WriteLine("Первая измененная армия");
  49.  
  50.             ShowList(_firstArmy);
  51.  
  52.             Console.ForegroundColor = ConsoleColor.Blue;
  53.             Console.WriteLine("Объединенная армия");
  54.  
  55.             ShowList(_secondArmy);
  56.  
  57.             Console.ReadKey();
  58.         }
  59.  
  60.         private void ChangeArmies()
  61.         {
  62.             string surnameCharForFilter = "Б";
  63.             var filteredList = FilterSoldiersByChar(surnameCharForFilter);
  64.  
  65.             Console.WriteLine("Отфильтрованные солдаты");
  66.             ShowList(filteredList);
  67.  
  68.             _firstArmy = _firstArmy.Except(filteredList).ToList();
  69.  
  70.             var unitedList = _secondArmy.Union(filteredList);
  71.             _secondArmy = unitedList.ToList();
  72.         }
  73.  
  74.         private IEnumerable<Person> FilterSoldiersByChar(string firstChar)
  75.         {
  76.             var filteredList = _firstArmy.Where(soldier => soldier.Surname.StartsWith(firstChar));
  77.  
  78.             return filteredList;
  79.         }
  80.  
  81.         private void ShowList(IEnumerable<Person> list)
  82.         {
  83.             foreach (Person person in list)
  84.             {
  85.                 Console.WriteLine($"{person.Name} - {person.Surname}");
  86.             }
  87.         }
  88.  
  89.         private List<Person> GenerateSoldiers()
  90.         {
  91.             PersonCreator creator = new PersonCreator();
  92.             int dataBaseCapacity = 20;
  93.  
  94.             List<Person> army = new List<Person>();
  95.  
  96.             for (int i = 0; i < dataBaseCapacity; i++)
  97.             {
  98.                 army.Add(creator.CreatePerson());
  99.             }
  100.  
  101.             return army;
  102.         }
  103.     }
  104.  
  105.  
  106.     class PersonCreator
  107.     {
  108.         private List<string> _names;
  109.         private List<string> _surnames;
  110.         private List<string> _weapons;
  111.         private List<string> _ranks;
  112.  
  113.         public PersonCreator()
  114.         {
  115.             InitSurnames();
  116.             InitNames();
  117.             InitRanks();
  118.             InitWeapons();
  119.         }
  120.  
  121.         public Person CreatePerson()
  122.         {
  123.             int maxTerm = 50;
  124.  
  125.             string name = GetRandomValue(_names);
  126.             string surname = GetRandomValue(_surnames);
  127.             string weapon = GetRandomValue(_weapons);
  128.             string rank = GetRandomValue(_ranks);
  129.             int term = UserUtils.GenerateRandomValue(maxTerm);
  130.  
  131.             return new Person(name, surname, weapon, rank, term);
  132.         }
  133.  
  134.         private void InitSurnames()
  135.         {
  136.             _surnames = new List<string>();
  137.             _surnames.Add("Смирнов");
  138.             _surnames.Add("Иванов");
  139.             _surnames.Add("Кузнецов");
  140.             _surnames.Add("Бабаев");
  141.             _surnames.Add("Соколов");
  142.             _surnames.Add("Лебедев");
  143.             _surnames.Add("Баранов");
  144.             _surnames.Add("Бобрыкин");
  145.             _surnames.Add("Морозов");
  146.             _surnames.Add("Козлов");
  147.             _surnames.Add("Волков");
  148.         }
  149.  
  150.         private void InitRanks()
  151.         {
  152.             _ranks = new List<string>();
  153.             _ranks.Add("Новобранец");
  154.             _ranks.Add("Рядовой");
  155.             _ranks.Add("Сержант");
  156.             _ranks.Add("Генерал");
  157.         }
  158.  
  159.         private void InitNames()
  160.         {
  161.             _names = new List<string>();
  162.             _names.Add("Максим");
  163.             _names.Add("Михаил");
  164.             _names.Add("Александр");
  165.             _names.Add("Дмитрий");
  166.             _names.Add("Денис");
  167.             _names.Add("Илья");
  168.             _names.Add("Андрей");
  169.             _names.Add("Артем");
  170.             _names.Add("Иван");
  171.             _names.Add("Алексей");
  172.             _names.Add("Никита");
  173.         }
  174.  
  175.         private void InitWeapons()
  176.         {
  177.             _weapons = new List<string>();
  178.             _weapons.Add("Пистолет");
  179.             _weapons.Add("Автомат");
  180.             _weapons.Add("Пулемет");
  181.             _weapons.Add("Гранатомет");
  182.         }
  183.  
  184.         private string GetRandomValue(List<string> values)
  185.         {
  186.             int randomId = UserUtils.GenerateRandomValue(values.Count);
  187.             return values[randomId];
  188.         }
  189.     }
  190.  
  191.     class Person
  192.     {
  193.         public Person(string name, string surname, string weapon, string rank, int term)
  194.         {
  195.             Name = name;
  196.             Surname = surname;
  197.             Weapon = weapon;
  198.             Rank = rank;
  199.             Term = term;
  200.         }
  201.  
  202.         public string Name { get; private set; }
  203.  
  204.         public string Surname { get; private set; }
  205.  
  206.         public string Weapon { get; private set; }
  207.  
  208.         public string Rank { get; private set; }
  209.  
  210.         public int Term { get; private set; }
  211.     }
  212.  
  213.     static class UserUtils
  214.     {
  215.         private static Random s_random = new Random();
  216.  
  217.         public static int GenerateRandomValue(int maxValue)
  218.         {
  219.             return s_random.Next(maxValue);
  220.         }
  221.  
  222.         public static int GenerateRandomValue(int minValue, int maxValue)
  223.         {
  224.             return s_random.Next(minValue, maxValue);
  225.         }
  226.  
  227.         public static double GenerateRandomDouble()
  228.         {
  229.             return s_random.NextDouble();
  230.         }
  231.     }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement