Advertisement
TeT91

ДЗ Амнистия

Jun 25th, 2024 (edited)
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.16 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 person = new PersonBase();
  12.             person.ShowPrisonersInfo();
  13.         }
  14.     }
  15.  
  16.     class PersonBase
  17.     {
  18.         private List<Person> _prisoners;
  19.  
  20.         public PersonBase()
  21.         {
  22.             GeneratePrisoners();
  23.         }
  24.  
  25.         public void ShowPrisonersInfo()
  26.         {
  27.             string crimeType = "Антиправительственное";
  28.  
  29.             var filteredList = _prisoners.Where(prisoner => prisoner.CrimeType == crimeType);
  30.  
  31.             Console.WriteLine("До амнистии:");
  32.  
  33.             ShowList(_prisoners);
  34.  
  35.             Console.WriteLine("После:");
  36.  
  37.             ShowList(filteredList);
  38.  
  39.             Console.ReadKey();
  40.         }
  41.  
  42.         private void ShowList(IEnumerable<Person> list)
  43.         {
  44.             foreach (Person person in list)
  45.             {
  46.                 Console.WriteLine($"{person.Surname} {person.Name} {person.Patronymic} - {person.CrimeType}");
  47.             }
  48.         }
  49.  
  50.         private void GeneratePrisoners()
  51.         {
  52.             PersonCreator creator = new PersonCreator();
  53.             int dataBaseCapacity = 20;
  54.  
  55.             _prisoners = new List<Person>();
  56.  
  57.             for (int i = 0; i < dataBaseCapacity; i++)
  58.             {
  59.                 _prisoners.Add(creator.CreatePerson());
  60.             }
  61.         }
  62.     }
  63.  
  64.     class PersonCreator
  65.     {
  66.         private List<string> _names;
  67.         private List<string> _surnames;
  68.         private List<string> _patronymic;
  69.         private List<string> _crimeTypes;
  70.  
  71.         public PersonCreator()
  72.         {
  73.             InitNames();
  74.             InitSurnames();
  75.             InitPatronymics();
  76.             InitCrimeTypes();
  77.         }
  78.  
  79.         public Person CreatePerson()
  80.         {
  81.             string name = GetRandomValue(_names);
  82.             string surname = GetRandomValue(_surnames);
  83.             string patronymic = GetRandomValue(_patronymic);
  84.             string crimeType = GetRandomValue(_crimeTypes);
  85.  
  86.             return new Person(name, surname, patronymic, crimeType);
  87.         }
  88.  
  89.         private void InitSurnames()
  90.         {
  91.             _surnames = new List<string>();
  92.             _surnames.Add("Смирнов");
  93.             _surnames.Add("Иванов");
  94.             _surnames.Add("Кузнецов");
  95.             _surnames.Add("Попов");
  96.             _surnames.Add("Соколов");
  97.             _surnames.Add("Лебедев");
  98.             _surnames.Add("Козлов");
  99.             _surnames.Add("Новиков");
  100.             _surnames.Add("Морозов");
  101.             _surnames.Add("Козлов");
  102.             _surnames.Add("Волков");
  103.         }
  104.  
  105.         private void InitPatronymics()
  106.         {
  107.             _patronymic = new List<string>();
  108.             _patronymic.Add("Максимович");
  109.             _patronymic.Add("Михаилович");
  110.             _patronymic.Add("Александрович");
  111.             _patronymic.Add("Дмитриевич");
  112.             _patronymic.Add("Денисович");
  113.             _patronymic.Add("Ильич");
  114.             _patronymic.Add("Андреевич");
  115.             _patronymic.Add("Артемович");
  116.             _patronymic.Add("Иванович");
  117.             _patronymic.Add("Алексеевич");
  118.             _patronymic.Add("Никитич");
  119.         }
  120.  
  121.         private void InitNames()
  122.         {
  123.             _names = new List<string>();
  124.             _names.Add("Максим");
  125.             _names.Add("Михаил");
  126.             _names.Add("Александр");
  127.             _names.Add("Дмитрий");
  128.             _names.Add("Денис");
  129.             _names.Add("Илья");
  130.             _names.Add("Андрей");
  131.             _names.Add("Артем");
  132.             _names.Add("Иван");
  133.             _names.Add("Алексей");
  134.             _names.Add("Никита");
  135.         }
  136.  
  137.         private void InitCrimeTypes()
  138.         {
  139.             _crimeTypes = new List<string>();
  140.             _crimeTypes.Add("Антиправительственное");
  141.             _crimeTypes.Add("Другое");
  142.         }
  143.  
  144.         private string GetRandomValue(List<string> values)
  145.         {
  146.             int randomId = UserUtils.GenerateRandomValue(values.Count);
  147.             return values[randomId];
  148.         }
  149.     }
  150.  
  151.     class Person
  152.     {
  153.         public Person(string name, string surname, string patronymic, string crimeType)
  154.         {
  155.             Name = name;
  156.             Surname = surname;
  157.             Patronymic = patronymic;
  158.             CrimeType = crimeType;
  159.         }
  160.  
  161.         public string Name { get; private set; }
  162.  
  163.         public string Surname { get; private set; }
  164.  
  165.         public string Patronymic { get; private set; }
  166.  
  167.         public string CrimeType { get; private set; }
  168.     }
  169.  
  170.     static class UserUtils
  171.     {
  172.         private static Random s_random = new Random();
  173.  
  174.         public static int GenerateRandomValue(int maxValue)
  175.         {
  176.             return s_random.Next(maxValue);
  177.         }
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement