Created
February 4, 2025 18:14
-
-
Save timofeevdima1996/7c5cdb128a8cd17578fc393d6fd2a841 to your computer and use it in GitHub Desktop.
ДЗ: Перевод бойцов 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Data; | |
using System.Linq; | |
namespace HomeWork2 | |
{ | |
internal class Program | |
{ | |
static void Main(string[] args) | |
{ | |
Army army = new Army(); | |
army.Work(); | |
} | |
} | |
class SoldiersDatabase | |
{ | |
private SoldirsFactory _soldiersFactory; | |
private List<Soldier> _soldiers1; | |
private List<Soldier> _soldiers2; | |
public SoldiersDatabase() | |
{ | |
_soldiersFactory = new SoldirsFactory(); | |
_soldiers1 = _soldiersFactory.CreateBaseSoldiers(); | |
_soldiers2 = _soldiersFactory.CreateBaseSoldiers(); | |
} | |
public void TransferSoldier() | |
{ | |
string first = "Б"; | |
Console.WriteLine("Первоночальные списки 1 и 2 отряда"); | |
Console.WriteLine("Первый отряд"); | |
ShowSolders(_soldiers1); | |
Console.WriteLine("Второй отряд"); | |
ShowSolders(_soldiers2); | |
_soldiers2 = _soldiers1.Where(soldier => soldier.Surname.ToUpper().StartsWith(first)).Union(_soldiers2).ToList(); | |
_soldiers1 = _soldiers1.Except(_soldiers2).ToList(); | |
Console.WriteLine("Отряды после сортировки"); | |
Console.WriteLine("Первый отряд"); | |
ShowSolders( _soldiers1); | |
Console.WriteLine("Второй отряд"); | |
ShowSolders(_soldiers2); | |
} | |
private void ShowSolders(List<Soldier> soldiers) | |
{ | |
for (int i = 0; i < soldiers.Count; i++) | |
{ | |
Console.Write($"\n{i + 1} - "); | |
soldiers[i].Show(); | |
} | |
} | |
} | |
class Army | |
{ | |
private SoldiersDatabase _soldiersDatabase; | |
public Army() | |
{ | |
_soldiersDatabase = new SoldiersDatabase(); | |
} | |
public void Work() | |
{ | |
Console.WriteLine("Добро пожаловать в армию\nНажмите любую клавишу чтобы посмотреть ваших отрядов"); | |
Console.ReadKey(); | |
_soldiersDatabase.TransferSoldier(); | |
} | |
} | |
class SoldirsFactory | |
{ | |
private int _countBase; | |
private int _minCountBase; | |
private int _maxCountBase; | |
private List<string> _names; | |
private List<string> _sernames; | |
private List<string> _rank; | |
public SoldirsFactory() | |
{ | |
_names = new List<string> { "Иван", "Петр", "Дмитрий", "Федор", "Сергей", "Киррил" }; | |
_sernames = new List<string> { "Иванов", "Бугаев", "Небов" }; | |
_rank = new List<string> { "Солдат", "Сержант", "Ефрейтор", "Прапорщик" }; | |
_minCountBase = 5; | |
_maxCountBase = 20; | |
_countBase = Utility.GetRandomNumber(_minCountBase, _maxCountBase); | |
} | |
public List<Soldier> CreateBaseSoldiers() | |
{ | |
List<Soldier> soldiers = new List<Soldier>(); | |
for (int i = 0; i < _countBase; i++) | |
{ | |
string randName = _names[Utility.GetRandomNumber(0, _names.Count)]; | |
string randSurname = _sernames[Utility.GetRandomNumber(0, _sernames.Count)]; | |
string randRank = _rank[Utility.GetRandomNumber(0, _rank.Count)]; | |
soldiers.Add(new Soldier(randName, randSurname, randRank)); | |
} | |
return soldiers; | |
} | |
} | |
class Soldier | |
{ | |
public Soldier(string name, string surname, string rank) | |
{ | |
Name = name; | |
Surname = surname; | |
Rank = rank; | |
} | |
public string Name { get; private set; } | |
public string Surname { get; private set; } | |
public string Rank { get; private set; } | |
public void Show() | |
{ | |
Console.WriteLine($"{Name} {Surname}\n Звание - {Rank}"); | |
} | |
} | |
class Utility | |
{ | |
static Random s_random = new Random(); | |
public static int GetRandomNumber(int min, int max) | |
{ | |
return s_random.Next(min, max); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment