upload
This commit is contained in:
307
Program.cs
Normal file
307
Program.cs
Normal file
@@ -0,0 +1,307 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Prac8
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
private static void Main()
|
||||
{
|
||||
Console.OutputEncoding = Encoding.UTF8;
|
||||
MyList<GymEquipment> equipmentList = new MyList<GymEquipment>();
|
||||
|
||||
bool isRunning = true;
|
||||
while (isRunning)
|
||||
{
|
||||
PrintMenu();
|
||||
Console.Write("Выберите действие: ");
|
||||
string choice = Console.ReadLine();
|
||||
Console.WriteLine();
|
||||
|
||||
try
|
||||
{
|
||||
switch (choice)
|
||||
{
|
||||
case "1":
|
||||
equipmentList.Add(ReadEquipment());
|
||||
Console.WriteLine("Тренажёр добавлен в конец списка.");
|
||||
break;
|
||||
|
||||
case "2":
|
||||
{
|
||||
int index = ReadInt("Введите индекс для вставки: ");
|
||||
equipmentList.Insert(index, ReadEquipment());
|
||||
Console.WriteLine("Тренажёр вставлен по указанному индексу.");
|
||||
break;
|
||||
}
|
||||
|
||||
case "3":
|
||||
{
|
||||
int index = ReadInt("Введите индекс изменяемого элемента: ");
|
||||
equipmentList[index] = ReadEquipment();
|
||||
Console.WriteLine("Элемент успешно изменён.");
|
||||
break;
|
||||
}
|
||||
|
||||
case "4":
|
||||
equipmentList.RemoveLast();
|
||||
Console.WriteLine("Последний элемент удалён.");
|
||||
break;
|
||||
|
||||
case "5":
|
||||
{
|
||||
int index = ReadInt("Введите индекс удаляемого элемента: ");
|
||||
equipmentList.RemoveAt(index);
|
||||
Console.WriteLine("Элемент удалён.");
|
||||
break;
|
||||
}
|
||||
|
||||
case "6":
|
||||
Console.WriteLine($"Количество элементов: {equipmentList.Count}");
|
||||
break;
|
||||
|
||||
case "7":
|
||||
equipmentList.Print();
|
||||
break;
|
||||
|
||||
case "8":
|
||||
{
|
||||
int index = ReadInt("Введите индекс элемента: ");
|
||||
Console.WriteLine(equipmentList.Get(index));
|
||||
break;
|
||||
}
|
||||
|
||||
case "9":
|
||||
AddRangeInteractive(equipmentList);
|
||||
break;
|
||||
|
||||
case "10":
|
||||
InsertRangeInteractive(equipmentList);
|
||||
break;
|
||||
|
||||
case "11":
|
||||
{
|
||||
int firstIndex = ReadInt("Введите первый индекс: ");
|
||||
int secondIndex = ReadInt("Введите второй индекс: ");
|
||||
equipmentList.RemoveRange(firstIndex, secondIndex);
|
||||
Console.WriteLine("Диапазон элементов удалён.");
|
||||
break;
|
||||
}
|
||||
|
||||
case "12":
|
||||
FindEquipment(equipmentList);
|
||||
break;
|
||||
|
||||
case "13":
|
||||
{
|
||||
int sortMode = ReadInt("Введите 1 для сортировки по возрастанию или 0 для сортировки по убыванию: ");
|
||||
equipmentList.Sort(sortMode);
|
||||
Console.WriteLine("Список отсортирован.");
|
||||
break;
|
||||
}
|
||||
|
||||
case "14":
|
||||
equipmentList.Reverse();
|
||||
Console.WriteLine("Список развёрнут.");
|
||||
break;
|
||||
|
||||
case "15":
|
||||
equipmentList.Distinct();
|
||||
Console.WriteLine("Дубликаты удалены.");
|
||||
break;
|
||||
|
||||
case "16":
|
||||
equipmentList.Clear();
|
||||
Console.WriteLine("Список очищен.");
|
||||
break;
|
||||
|
||||
case "17":
|
||||
PrintWithForeach(equipmentList);
|
||||
break;
|
||||
|
||||
case "0":
|
||||
isRunning = false;
|
||||
Console.WriteLine("Программа завершена.");
|
||||
break;
|
||||
|
||||
default:
|
||||
Console.WriteLine("Такого пункта меню нет. Люди, как обычно, выбирают что попало.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Ошибка: {ex.Message}");
|
||||
}
|
||||
|
||||
if (isRunning)
|
||||
{
|
||||
Pause();
|
||||
Console.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintMenu()
|
||||
{
|
||||
Console.WriteLine("Меню работы с MyList<Тренажёр>:");
|
||||
Console.WriteLine("1 - Добавить элемент в конец");
|
||||
Console.WriteLine("2 - Добавить элемент по индексу");
|
||||
Console.WriteLine("3 - Изменить элемент по индексу");
|
||||
Console.WriteLine("4 - Удалить последний элемент");
|
||||
Console.WriteLine("5 - Удалить элемент по индексу");
|
||||
Console.WriteLine("6 - Получить количество элементов");
|
||||
Console.WriteLine("7 - Вывести список");
|
||||
Console.WriteLine("8 - Вывести элемент по индексу");
|
||||
Console.WriteLine("9 - Добавить диапазон элементов в конец");
|
||||
Console.WriteLine("10 - Вставить диапазон элементов по индексу");
|
||||
Console.WriteLine("11 - Удалить диапазон элементов");
|
||||
Console.WriteLine("12 - Найти элемент по условию");
|
||||
Console.WriteLine("13 - Сортировать список");
|
||||
Console.WriteLine("14 - Развернуть список");
|
||||
Console.WriteLine("15 - Удалить дубликаты");
|
||||
Console.WriteLine("16 - Очистить список");
|
||||
Console.WriteLine("17 - Вывести список через foreach");
|
||||
Console.WriteLine("0 - Выход");
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
private static GymEquipment ReadEquipment()
|
||||
{
|
||||
Console.WriteLine("Введите данные тренажёра:");
|
||||
int number = ReadInt("№: ");
|
||||
string name = ReadRequiredString("Название: ");
|
||||
string type = ReadRequiredString("Тип: ");
|
||||
string condition = ReadRequiredString("Состояние: ");
|
||||
string place = ReadRequiredString("Место: ");
|
||||
|
||||
return new GymEquipment(number, name, type, condition, place);
|
||||
}
|
||||
|
||||
private static void AddRangeInteractive(MyList<GymEquipment> equipmentList)
|
||||
{
|
||||
int count = ReadInt("Сколько элементов нужно добавить в конец: ");
|
||||
if (count <= 0)
|
||||
{
|
||||
Console.WriteLine("Количество должно быть больше нуля.");
|
||||
return;
|
||||
}
|
||||
|
||||
MyList<GymEquipment> tempList = new MyList<GymEquipment>(count);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
Console.WriteLine($"\nЭлемент {i + 1} из {count}:");
|
||||
tempList.Add(ReadEquipment());
|
||||
}
|
||||
|
||||
equipmentList.AddRange(tempList);
|
||||
Console.WriteLine("Диапазон элементов добавлен в конец списка.");
|
||||
}
|
||||
|
||||
private static void InsertRangeInteractive(MyList<GymEquipment> equipmentList)
|
||||
{
|
||||
int index = ReadInt("Введите индекс для вставки диапазона: ");
|
||||
int count = ReadInt("Сколько элементов нужно вставить: ");
|
||||
|
||||
if (count <= 0)
|
||||
{
|
||||
Console.WriteLine("Количество должно быть больше нуля.");
|
||||
return;
|
||||
}
|
||||
|
||||
MyList<GymEquipment> tempList = new MyList<GymEquipment>(count);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
Console.WriteLine($"\nЭлемент {i + 1} из {count}:");
|
||||
tempList.Add(ReadEquipment());
|
||||
}
|
||||
|
||||
equipmentList.InsertRange(index, tempList);
|
||||
Console.WriteLine("Диапазон элементов вставлен.");
|
||||
}
|
||||
|
||||
private static void FindEquipment(MyList<GymEquipment> equipmentList)
|
||||
{
|
||||
if (equipmentList.Count == 0)
|
||||
{
|
||||
Console.WriteLine("Список пуст.");
|
||||
return;
|
||||
}
|
||||
|
||||
string fragment = ReadRequiredString("Введите текст для поиска (по названию, типу, состоянию или месту): ");
|
||||
|
||||
GymEquipment found = equipmentList.Find(item =>
|
||||
item.Name.IndexOf(fragment, StringComparison.OrdinalIgnoreCase) >= 0
|
||||
|| item.Type.IndexOf(fragment, StringComparison.OrdinalIgnoreCase) >= 0
|
||||
|| item.Condition.IndexOf(fragment, StringComparison.OrdinalIgnoreCase) >= 0
|
||||
|| item.Place.IndexOf(fragment, StringComparison.OrdinalIgnoreCase) >= 0);
|
||||
|
||||
if (found == null)
|
||||
{
|
||||
Console.WriteLine("Подходящий элемент не найден.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Найденный элемент:");
|
||||
Console.WriteLine(found);
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintWithForeach(MyList<GymEquipment> equipmentList)
|
||||
{
|
||||
if (equipmentList.Count == 0)
|
||||
{
|
||||
Console.WriteLine("Список пуст.");
|
||||
return;
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
foreach (GymEquipment equipment in equipmentList)
|
||||
{
|
||||
Console.WriteLine($"[{index}] {equipment}");
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
private static int ReadInt(string message)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Console.Write(message);
|
||||
string input = Console.ReadLine();
|
||||
|
||||
if (int.TryParse(input, out int value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
Console.WriteLine("Введите целое число.");
|
||||
}
|
||||
}
|
||||
|
||||
private static string ReadRequiredString(string message)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Console.Write(message);
|
||||
string input = Console.ReadLine();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(input))
|
||||
{
|
||||
return input.Trim();
|
||||
}
|
||||
|
||||
Console.WriteLine("Строка не должна быть пустой.");
|
||||
}
|
||||
}
|
||||
|
||||
private static void Pause()
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Нажмите Enter, чтобы продолжить...");
|
||||
Console.ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user