Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- public class Program
- {
- public static void Main(string[] args)
- {
- Detective detective = new Detective();
- detective.SearchCriminals();
- }
- }
- public class Detective
- {
- private Random _random;
- private List<Criminal> _criminals;
- private string[] _nationalities = { "American", "Englishman", "Canadian", "Russian", "Belarussian", "Ukranian"};
- private string[] _names = { "Mike", "Nick", "Valera", "Virgil", "Dante"};
- private int _heightMinimum = 140;
- private int _heightMaximum = 210;
- private int _weightMinimum = 45;
- private int _weightMaximum = 180;
- private int _percentRange = 100;
- private int _percentPrisoner = 50;
- private int _amountCriminalsMinimum = 10;
- private int _amountCriminalMaximum = 50;
- public Detective()
- {
- _criminals = new List<Criminal>();
- _random = new Random();
- CreateCriminals();
- }
- public void SearchCriminals()
- {
- bool isInput = true;
- bool isWeightParse;
- bool isHeightParse;
- string nationality;
- int height;
- int weight;
- do
- {
- Console.Clear();
- PrintNationalities();
- nationality = Console.ReadLine();
- PrintHeight();
- isHeightParse = int.TryParse(Console.ReadLine(), out height);
- PrintWeight();
- isWeightParse = int.TryParse(Console.ReadLine(), out weight);
- if (HasNationality(nationality) && isWeightParse && isHeightParse)
- isInput = false;
- }
- while (isInput);
- var criminalsFiltered = from Criminal criminal in _criminals
- where criminal.Nationality.Equals(nationality) &&
- criminal.Weight == weight &&
- criminal.Height == height &&
- criminal.IsPrisoner == false
- select criminal;
- Console.WriteLine("Searched criminals : ");
- foreach (var criminal in criminalsFiltered)
- Console.WriteLine(criminal);
- }
- private void PrintNationalities()
- {
- Console.WriteLine("List nationalities : ");
- foreach (string nationality in _nationalities)
- Console.WriteLine(nationality);
- Console.WriteLine("Input a nationality");
- }
- private void PrintHeight()
- {
- Console.WriteLine($"Minimum height : {_heightMinimum}");
- Console.WriteLine($"Maximum height : {_heightMaximum}");
- Console.WriteLine("Input a height");
- }
- public void PrintWeight()
- {
- Console.WriteLine($"Minimum weight : {_weightMinimum}");
- Console.WriteLine($"Maximum weight : {_weightMaximum}");
- Console.WriteLine("Input a weight");
- }
- private bool HasNationality(string nation)
- {
- bool isInArray = false;
- foreach (string nationality in _nationalities)
- {
- if (nationality.Equals(nation))
- {
- isInArray = true;
- return isInArray;
- }
- }
- return isInArray;
- }
- private void CreateCriminals()
- {
- int amountCriminals = _random.Next(_amountCriminalsMinimum, _amountCriminalMaximum);
- string name;
- string nationality;
- int weight;
- int height;
- bool isPrisoner;
- for (int i = 0; i < amountCriminals; ++i)
- {
- name = _names[_random.Next(_names.Length)];
- nationality = _nationalities[_random.Next(_nationalities.Length)];
- weight = _random.Next(_weightMinimum, _weightMaximum);
- height = _random.Next(_heightMinimum, _heightMaximum);
- isPrisoner = _random.Next(_percentRange) > _percentPrisoner;
- _criminals.Add(new Criminal(name, isPrisoner, nationality, height, weight));
- }
- }
- }
- public class Criminal
- {
- public bool IsPrisoner { get; private set; }
- public string Name { get; private set; }
- public string Nationality { get; private set; }
- public int Height { get; private set; }
- public int Weight { get; private set; }
- public Criminal(string name, bool isPrisoner, string nationality, int height, int weight)
- {
- Name = name;
- IsPrisoner = isPrisoner;
- Nationality = nationality;
- Height = height;
- Weight = weight;
- }
- public override string ToString()
- {
- string result = "";
- result += String.Format($"{Name} - {Nationality}, {Height} m, {Weight} kg, is in prison : {IsPrisoner}");
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement