Advertisement
SPavelA

LinqTask1FindCriminals

Nov 14th, 2024 (edited)
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.85 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace LinqTask1FindCriminal
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             DetectiveDepartment detectiveDepartment = new DetectiveDepartment();
  12.  
  13.             detectiveDepartment.Work();
  14.         }
  15.     }
  16.  
  17.     public class DetectiveDepartment
  18.     {
  19.         private List<Criminal> _criminals;
  20.  
  21.         public DetectiveDepartment()
  22.         {
  23.             FillCriminals();
  24.         }
  25.  
  26.         public void Work()
  27.         {
  28.             const char CommandExit = 'q';
  29.  
  30.             bool isWorking = true;
  31.             int minimumHeight;
  32.             int maximumHeight;
  33.             int minimumWidth;
  34.             int maximumWidth;
  35.             string nationality;
  36.  
  37.             while (isWorking)
  38.             {
  39.                 ShowCriminals(_criminals);
  40.  
  41.                 Console.Write("\nВведите минимальный рост преступника: ");
  42.                 minimumHeight = ReadInt();
  43.                 Console.Write("Введите максимальный рост преступника: ");
  44.                 maximumHeight = ReadInt();
  45.                 Console.Write("Введите минимальный вес преступника: ");
  46.                 minimumWidth = ReadInt();
  47.                 Console.Write("Введите максимальный вес преступника: ");
  48.                 maximumWidth = ReadInt();
  49.                 Console.Write("Введите национальность преступника: ");
  50.                 nationality = Console.ReadLine();
  51.                 Console.WriteLine();
  52.  
  53.                 var filteredCriminals = _criminals.Where(criminal =>
  54.                         criminal.Height >= minimumHeight && criminal.Height <= maximumHeight &&
  55.                         criminal.Width >= minimumWidth && criminal.Width <= maximumWidth &&
  56.                         criminal.Nationality == nationality && criminal.IsInPrison == false).ToList();
  57.  
  58.                 if (filteredCriminals.Count() == 0)
  59.                 {
  60.                     Console.WriteLine("Нет свободных преступников, подходящих под введенные требования");
  61.                 }
  62.                 else
  63.                 {
  64.                     ShowCriminals(filteredCriminals);
  65.                 }
  66.  
  67.                 Console.WriteLine($"\nДля продолжения нажмите любую клавишу или {CommandExit} для выхода");
  68.  
  69.                 if (Console.ReadKey().KeyChar == CommandExit)
  70.                     isWorking = false;
  71.  
  72.                 Console.Clear();
  73.             }
  74.         }
  75.  
  76.         private void ShowCriminals(List<Criminal> criminals)
  77.         {
  78.             Console.WriteLine("Преступники:");
  79.  
  80.             foreach (var criminal in criminals)
  81.             {
  82.                 criminal.ShowInfo();
  83.             }
  84.         }
  85.  
  86.         private void FillCriminals()
  87.         {
  88.             _criminals = new List<Criminal>
  89.             {
  90.                 new Criminal("gdfsgdfg", true, 180, 80, "русский"),
  91.                 new Criminal("dfsdfsd", false, 170, 100, "узбек"),
  92.                 new Criminal("bfgnbfn", false, 186, 90, "таджик"),
  93.                 new Criminal("bnvncvbn", true, 184, 70, "русский"),
  94.                 new Criminal("gdfxvxcvxcsgdfg", false, 180, 60, "еврей"),
  95.                 new Criminal("xcvzxcc", false, 189, 77, "негр"),
  96.                 new Criminal("xvvxv", false, 160, 84, "узбек"),
  97.                 new Criminal("nfhnn", true, 166, 86, "русский"),
  98.                 new Criminal("dgdfgdg", false, 172, 89, "узбек"),
  99.             };
  100.         }
  101.  
  102.         private static int ReadInt()
  103.         {
  104.             int inputNumber;
  105.  
  106.             while (int.TryParse(Console.ReadLine(), out inputNumber) == false)
  107.             {
  108.                 Console.Write("Это не число, попробуйте еще раз: ");
  109.             }
  110.  
  111.             return inputNumber;
  112.         }
  113.     }
  114.  
  115.     public class Criminal
  116.     {
  117.         public Criminal(string name, bool isInPrison, int height, int width, string nationality)
  118.         {
  119.             Name = name;
  120.             IsInPrison = isInPrison;
  121.             Height = height;
  122.             Width = width;
  123.             Nationality = nationality;
  124.         }
  125.  
  126.         public string Name { get; private set; }
  127.         public bool IsInPrison { get; private set; }
  128.         public int Height { get; private set; }
  129.         public int Width { get; private set; }
  130.         public string Nationality { get; private set; }
  131.  
  132.         public void ShowInfo()
  133.         {
  134.             Console.WriteLine($"{Name}: рост {Height} см, вес {Width} кг, национальность: {Nationality}, в тюрьме: {IsInPrison}");
  135.         }
  136.     }
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement