Skip to content

Instantly share code, notes, and snippets.

@StrikerXx798
Last active June 29, 2025 11:19
Show Gist options
  • Save StrikerXx798/cbfa9b5da812f7c57cc2c9588e7890be to your computer and use it in GitHub Desktop.
Save StrikerXx798/cbfa9b5da812f7c57cc2c9588e7890be to your computer and use it in GitHub Desktop.
ДЗ: Отчёт о вооружении
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
Army army = new Army();
army.Run();
}
}
class Army
{
private const int CommandShowAll = 1;
private const int CommandShowOnlyNameAndRank = 2;
private const int CommandExit = 0;
private List<Soldier> _soldiers;
public Army()
{
_soldiers = new List<Soldier>
{
new Soldier("Иванов Иван", "Автомат Калашникова", "Рядовой", 5),
new Soldier("Петров Пётр", "Снайперская винтовка", "Сержант", 10),
new Soldier("Сидоров Сергей", "Пулемёт", "Старший сержант", 12),
new Soldier("Алексеев Алексей", "Гранатомёт", "Лейтенант", 24),
new Soldier("Михайлов Михаил", "Пистолет", "Капитан", 30),
new Soldier("Фёдоров Фёдор", "Автомат Калашникова", "Рядовой", 6),
};
}
public void Run()
{
bool isRunning = true;
while (isRunning)
{
Console.WriteLine("\n--- Меню ---");
Console.WriteLine($"{CommandShowAll} - Показать всех солдат");
Console.WriteLine(
$"{CommandShowOnlyNameAndRank} - Показать только имя и звание каждого солдата"
);
Console.WriteLine($"{CommandExit} - Выйти");
int input = GetNumberInput("Введите команду: ");
switch (input)
{
case CommandShowAll:
ShowAllSoldiers(_soldiers);
break;
case CommandShowOnlyNameAndRank:
ShowOnlyNameAndRank();
break;
case CommandExit:
isRunning = false;
break;
default:
Console.WriteLine("Неизвестная команда.");
break;
}
}
}
private int GetNumberInput(string message)
{
Console.WriteLine(message);
string input = Console.ReadLine();
int number;
while (int.TryParse(input, out number) == false)
{
Console.WriteLine("Некорректный ввод. Попробуйте снова.");
input = Console.ReadLine();
}
return number;
}
private void ShowAllSoldiers(List<Soldier> soldiers)
{
foreach (var soldier in soldiers)
{
soldier.ShowInfo();
}
}
private void ShowOnlyNameAndRank()
{
var nameAndRank = _soldiers
.Select(soldier => new { soldier.Name, soldier.Rank })
.ToList();
Console.WriteLine("\nИмя и звание каждого солдата:");
foreach (var item in nameAndRank)
{
Console.WriteLine($"Имя: {item.Name} | Звание: {item.Rank}");
}
}
}
class Soldier
{
public Soldier(string name, string weapon, string rank, int serviceTerm)
{
Name = name;
Weapon = weapon;
Rank = rank;
ServiceTerm = serviceTerm;
}
public string Name { get; }
public string Weapon { get; }
public string Rank { get; }
public int ServiceTerm { get; }
public void ShowInfo()
{
Console.WriteLine(
$"Имя: {Name} | Оружие: {Weapon} | Звание: {Rank} | Срок службы: {ServiceTerm} мес."
);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment