Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save timofeevdima1996/7c5cdb128a8cd17578fc393d6fd2a841 to your computer and use it in GitHub Desktop.
Save timofeevdima1996/7c5cdb128a8cd17578fc393d6fd2a841 to your computer and use it in GitHub Desktop.
ДЗ: Перевод бойцов 2
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