Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Clight_38_LINQ_FindCriminal
- {
- class Program
- {
- static void Main(string[] args)
- {
- int height = 0;
- int weight = 0;
- string nationality = "";
- Dictionary<string, Nationality> persons = new Dictionary<string, Nationality>
- {
- {"Иванов А.Г.", Nationality.Русский }, {"Владимиров Б.У.", Nationality.Русский}, {"Оксанин Г.В.", Nationality.Русский },
- {"Генацвали А.В.", Nationality.Грузин }, {"Маринин С.А.", Nationality.Русский}, {"Игорян Х.А.", Nationality.Грузин },
- {"Евгенов С.М.", Nationality.Русский }, {"Мариуполев С.В", Nationality.Таджик }, {"Надеждина Н.Т.", Nationality.Русский },
- {"Русланков В.А." , Nationality.Русский}, {"Сергеев Н.Н.", Nationality.Русский }, {"Иринина И.П.", Nationality.Грузин },
- {"Маринок Ж.А.", Nationality.Таджик }, {"Игрил Х.Х.", Nationality.Таджик }, {"Оксанн П.С.", Nationality.Таджик },
- {"Возбудидзе А.Ю.", Nationality.Грузин }, {"Попин М.Ю.", Nationality.Русский }, {"Сааркян С.И.", Nationality.Грузин }
- };
- SecurityService securityService = new SecurityService(persons);
- while (true)
- {
- Console.Clear();
- Console.WriteLine("База Службы Безопасности.\n");
- height = securityService.CheckInputUser("\nВведите рост подозреваемого (см, от 155 до 210): ");
- weight = securityService.CheckInputUser("Введите вес подозреваемого (кг, от 60 до 110): ");
- nationality = securityService.CheckInputUserNationality("Введите национальность подозреваемого (Русский, Грузин, Таджик): ");
- List<Criminal> matchByCriminals = securityService.FindMatchByCriminals(height, weight, nationality);
- ShowCriminals(matchByCriminals);
- }
- }
- public static void ShowCriminals(List<Criminal> criminals)
- {
- if (criminals.Count == 0)
- {
- Console.WriteLine("\nПодозреваемых с такими данными не найдено.");
- }
- else
- {
- Console.WriteLine("\nНайдены подозреваемые:");
- foreach (var criminal in criminals)
- {
- criminal.ShowInfo();
- }
- }
- Console.ReadKey();
- }
- }
- public enum Nationality
- {
- Русский, Грузин, Таджик
- }
- class SecurityService
- {
- private Random random = new Random();
- private List<Criminal> _criminals;
- public SecurityService(Dictionary<string, Nationality> persons)
- {
- _criminals = new List<Criminal>();
- foreach (var person in persons)
- {
- int height = random.Next(155, 210);
- int weight = random.Next(60, 110);
- bool isConclusion = Convert.ToBoolean(random.Next(0, 2));
- Criminal criminal = new Criminal(person.Key, person.Value.ToString(), height, weight, isConclusion);
- _criminals.Add(criminal);
- }
- }
- public List<Criminal> FindMatchByCriminals(int height, int weight, string nationality)
- {
- var filteredCrimanals = from Criminal criminal in _criminals
- where (criminal.Height > height - 3 && criminal.Height < height + 3) &&
- (criminal.Weight > weight - 3 && criminal.Weight < weight + 3) &&
- (criminal.Nationality == nationality) &&
- (criminal.IsConclusion == false)
- select criminal;
- return filteredCrimanals.ToList();
- }
- public int CheckInputUser(string text)
- {
- bool isNumber;
- bool isVerify = false;
- int verifyValue = 0;
- while (!isVerify)
- {
- Console.Write(text);
- isNumber = Int32.TryParse(Console.ReadLine(), out int value);
- if (isNumber)
- {
- verifyValue = value;
- isVerify = true;
- }
- else
- {
- Console.WriteLine("Не корректный ввод.\n");
- Console.ReadKey();
- }
- }
- return verifyValue;
- }
- public string CheckInputUserNationality(string text)
- {
- string nationality = "";
- bool isVerify = false;
- while (!isVerify)
- {
- Console.Write(text);
- nationality = Console.ReadLine();
- var filteredCrimanals = from Criminal criminal in _criminals
- where criminal.Nationality == nationality
- select criminal;
- if (filteredCrimanals.Count() > 0)
- {
- isVerify = true;
- }
- else
- {
- Console.WriteLine($"Национальность {nationality} в базе не найдена. Попробуйте ввести другую.\n");
- Console.ReadKey();
- }
- }
- return nationality;
- }
- }
- }
- class Criminal
- {
- Random random = new Random();
- public string Fio { get; private set; }
- public string Nationality { get; private set; }
- public int Height { get; private set; }
- public int Weight { get; private set; }
- public bool IsConclusion { get; private set; }
- public Criminal(string name, string nationality, int height, int weight, bool isConclusion)
- {
- Fio = name;
- Nationality = nationality;
- Height = height;
- Weight = weight;
- IsConclusion = isConclusion;
- }
- public void ShowInfo()
- {
- if (IsConclusion)
- {
- Console.WriteLine($"Ф.И.О.: {Fio}, Национальность: {Nationality}, Рост: {Height} см, Вес: {Weight} кг, Заключенный: да");
- }
- else
- {
- Console.WriteLine($"Ф.И.О.: {Fio}, Национальность: {Nationality}, Рост: {Height} см, Вес: {Weight} кг, Заключенный: нет");
- }
- }
- }
Add Comment
Please, Sign In to add comment