Advertisement
NikaBang

Поиск преступников

Dec 6th, 2022
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.05 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. internal class Program
  6. {
  7.     //У нас есть список всех преступников.
  8.     //В преступнике есть поля: ФИО, заключен ли он под стражу, рост, вес, национальность.
  9.     //Вашей программой будут пользоваться детективы.
  10.     //У детектива запрашиваются данные (рост, вес, национальность),
  11.     //и детективу выводятся все преступники, которые подходят под эти параметры, но уже заключенные под стражу выводиться не должны.
  12.  
  13.     static void Main(string[] args)
  14.     {
  15.         Database database = new Database();
  16.         database.Menu();
  17.     }
  18.  
  19.     class Criminal
  20.     {
  21.         public bool InJail { get; }
  22.         public string Name { get; }
  23.         public string Race { get; }
  24.         public int Height { get; }
  25.         public int Weight { get; }
  26.  
  27.         public Criminal(string name, string race, int height, int weight, bool inJail)
  28.         {
  29.             Name = name;
  30.             Race = race;
  31.             Height = height;
  32.             Weight = weight;
  33.             InJail = inJail;
  34.         }
  35.  
  36.         public void ShowInfo()
  37.         {
  38.             Console.WriteLine($"Раса: {Race}. Имя: {Name}.\nРост: {Height}. Вес: {Weight}.");
  39.  
  40.             if (InJail == true)
  41.             {
  42.                 Console.WriteLine("Статус: Осужден.\n");
  43.             }
  44.             else
  45.             {
  46.                 Console.WriteLine("Статус: В розыске.\n");
  47.             }
  48.         }
  49.     }
  50.  
  51.     class Database
  52.     {
  53.         private List<Criminal> _criminals;
  54.         private string[] _races;
  55.  
  56.         public Database()
  57.         {
  58.             List<Criminal> criminals = new List<Criminal>();
  59.             _criminals = criminals;
  60.  
  61.             string[] races = { "Зооморф", "Орк", "Человек", "Эльф" };
  62.             _races = races;
  63.  
  64.             Fill();
  65.         }
  66.  
  67.         private void Fill()
  68.         {
  69.             Criminal[] criminals =
  70.             {
  71.                 new Criminal("Тео", _races[0], 200, 120, true),
  72.                 new Criminal("Горбаг", _races[1], 210, 100, false),
  73.                 new Criminal("Трал", _races[1], 225, 105, true),
  74.                 new Criminal("Валера", _races[2], 175, 86, false),
  75.                 new Criminal("Джейсан", _races[2], 182, 80, true),
  76.                 new Criminal("Офлас", _races[3], 190, 65, false),
  77.                 new Criminal("Олалай", _races[3], 194, 73, true)
  78.             };
  79.  
  80.             _criminals.AddRange(criminals);
  81.         }
  82.  
  83.         public void ShowInfoCriminals()
  84.         {
  85.             foreach (var criminal in _criminals)
  86.             {
  87.                 criminal.ShowInfo();
  88.             }
  89.         }
  90.  
  91.         public void Menu()
  92.         {
  93.             bool exit = false;
  94.  
  95.             while (exit == false)
  96.             {
  97.                 Console.Clear();
  98.                 Console.Write("Добро пожаловать детектив. Вы находитесь в базе данных особо опасных приступников." +
  99.                "\n1. Поиск преступников.\n2. Выход.\nВыбере нужный пункт: ");
  100.                 string userInput = Console.ReadLine();
  101.  
  102.                 if (userInput == "1")
  103.                 {
  104.                     Search();
  105.                 }
  106.                 else if (userInput == "2")
  107.                 {
  108.                     Console.WriteLine("Программа завершена.");
  109.  
  110.                     exit = true;
  111.                 }
  112.                 else
  113.                 {
  114.                     Console.WriteLine("Ошибка ввода!");
  115.                     Console.ReadKey();
  116.                 }
  117.             }
  118.         }
  119.  
  120.         private void Search()
  121.         {
  122.             string race = "";
  123.             int minHeight = 0;
  124.             int maxHeight = 0;
  125.             int rangeHeight = 20;
  126.             int minWeight = 0;
  127.             int maxWeight = 0;
  128.             int rangeWeight = 10;
  129.  
  130.             Console.Write("\nВведите Расу искомого (");
  131.  
  132.             foreach (var variant in _races)
  133.             {
  134.                 Console.Write(variant + " ");
  135.             }
  136.  
  137.             Console.WriteLine("\b)");
  138.             race = Console.ReadLine();
  139.  
  140.             Console.Write("Введите средний рост искомого: ");
  141.             int height = ReadInt(Console.ReadLine());
  142.             minHeight = height - rangeHeight;
  143.             maxHeight = height + rangeHeight;
  144.  
  145.             Console.Write("Введите средний вес искомого: ");
  146.             int weight = ReadInt(Console.ReadLine());
  147.             minWeight = weight - rangeWeight;
  148.             maxWeight = weight + rangeWeight;
  149.  
  150.             var searchCriminals = from Criminal criminal in _criminals
  151.                                   where criminal.InJail == false && criminal.Race == race &&
  152.                                   criminal.Height >= minHeight && criminal.Height <= maxHeight &&
  153.                                   criminal.Weight >= minWeight && criminal.Weight <= maxWeight
  154.                                   select criminal;
  155.  
  156.             Console.WriteLine("\nРезультат поиска:");
  157.  
  158.             foreach (var criminal in searchCriminals)
  159.             {
  160.                 criminal.ShowInfo();
  161.             }
  162.  
  163.             Console.ReadKey();
  164.         }
  165.  
  166.         private int ReadInt(string convert)
  167.         {
  168.             bool success = int.TryParse(convert, out int number);
  169.  
  170.             while (success == false)
  171.             {
  172.                 Console.Write("Ошибка конвертации, повторите ввод: ");
  173.                 success = int.TryParse(Console.ReadLine(), out number);
  174.             }
  175.             return number;
  176.         }
  177.     }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement