Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- internal class Program
- {
- //У нас есть список всех преступников.
- //В преступнике есть поля: ФИО, заключен ли он под стражу, рост, вес, национальность.
- //Вашей программой будут пользоваться детективы.
- //У детектива запрашиваются данные (рост, вес, национальность),
- //и детективу выводятся все преступники, которые подходят под эти параметры, но уже заключенные под стражу выводиться не должны.
- static void Main(string[] args)
- {
- Database database = new Database();
- database.Menu();
- }
- class Criminal
- {
- public bool InJail { get; }
- public string Name { get; }
- public string Race { get; }
- public int Height { get; }
- public int Weight { get; }
- public Criminal(string name, string race, int height, int weight, bool inJail)
- {
- Name = name;
- Race = race;
- Height = height;
- Weight = weight;
- InJail = inJail;
- }
- public void ShowInfo()
- {
- Console.WriteLine($"Раса: {Race}. Имя: {Name}.\nРост: {Height}. Вес: {Weight}.");
- if (InJail == true)
- {
- Console.WriteLine("Статус: Осужден.\n");
- }
- else
- {
- Console.WriteLine("Статус: В розыске.\n");
- }
- }
- }
- class Database
- {
- private List<Criminal> _criminals;
- private string[] _races;
- public Database()
- {
- List<Criminal> criminals = new List<Criminal>();
- _criminals = criminals;
- string[] races = { "Зооморф", "Орк", "Человек", "Эльф" };
- _races = races;
- Fill();
- }
- private void Fill()
- {
- Criminal[] criminals =
- {
- new Criminal("Тео", _races[0], 200, 120, true),
- new Criminal("Горбаг", _races[1], 210, 100, false),
- new Criminal("Трал", _races[1], 225, 105, true),
- new Criminal("Валера", _races[2], 175, 86, false),
- new Criminal("Джейсан", _races[2], 182, 80, true),
- new Criminal("Офлас", _races[3], 190, 65, false),
- new Criminal("Олалай", _races[3], 194, 73, true)
- };
- _criminals.AddRange(criminals);
- }
- public void ShowInfoCriminals()
- {
- foreach (var criminal in _criminals)
- {
- criminal.ShowInfo();
- }
- }
- public void Menu()
- {
- bool exit = false;
- while (exit == false)
- {
- Console.Clear();
- Console.Write("Добро пожаловать детектив. Вы находитесь в базе данных особо опасных приступников." +
- "\n1. Поиск преступников.\n2. Выход.\nВыбере нужный пункт: ");
- string userInput = Console.ReadLine();
- if (userInput == "1")
- {
- Search();
- }
- else if (userInput == "2")
- {
- Console.WriteLine("Программа завершена.");
- exit = true;
- }
- else
- {
- Console.WriteLine("Ошибка ввода!");
- Console.ReadKey();
- }
- }
- }
- private void Search()
- {
- string race = "";
- int minHeight = 0;
- int maxHeight = 0;
- int rangeHeight = 20;
- int minWeight = 0;
- int maxWeight = 0;
- int rangeWeight = 10;
- Console.Write("\nВведите Расу искомого (");
- foreach (var variant in _races)
- {
- Console.Write(variant + " ");
- }
- Console.WriteLine("\b)");
- race = Console.ReadLine();
- Console.Write("Введите средний рост искомого: ");
- int height = ReadInt(Console.ReadLine());
- minHeight = height - rangeHeight;
- maxHeight = height + rangeHeight;
- Console.Write("Введите средний вес искомого: ");
- int weight = ReadInt(Console.ReadLine());
- minWeight = weight - rangeWeight;
- maxWeight = weight + rangeWeight;
- var searchCriminals = from Criminal criminal in _criminals
- where criminal.InJail == false && criminal.Race == race &&
- criminal.Height >= minHeight && criminal.Height <= maxHeight &&
- criminal.Weight >= minWeight && criminal.Weight <= maxWeight
- select criminal;
- Console.WriteLine("\nРезультат поиска:");
- foreach (var criminal in searchCriminals)
- {
- criminal.ShowInfo();
- }
- Console.ReadKey();
- }
- private int ReadInt(string convert)
- {
- bool success = int.TryParse(convert, out int number);
- while (success == false)
- {
- Console.Write("Ошибка конвертации, повторите ввод: ");
- success = int.TryParse(Console.ReadLine(), out number);
- }
- return number;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement