Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОП_отчет.odt_1

.pdf
Скачиваний:
0
Добавлен:
27.06.2025
Размер:
986.72 Кб
Скачать

static int CountPassengersAboveAverage(int[] numbers, double average)

{

int count = 0;

foreach (int num in numbers)

{

if (num > average)

{

count++;

}

}

return count;

}

int numberOfPassengers = 10;

int[] numberOfItems = new int[numberOfPassengers]; double[] totalWeight = new double[numberOfPassengers];

for (int i = 0; i < numberOfPassengers; i++)

{

Console.WriteLine($"Пассажир {i + 1}:"); Console.Write("Введите количество вещей: "); numberOfItems[i] = int.Parse(Console.ReadLine()); Console.Write("Введите общий вес вещей: "); totalWeight[i] = double.Parse(Console.ReadLine());

}

double averageNumberOfItems = CalculateAverage(numberOfItems); int passengersAboveAverage =

CountPassengersAboveAverage(numberOfItems, averageNumberOfItems);

31

Console.WriteLine($"Число пассажиров, количество вещей которых превосходит среднее число вещей: {passengersAboveAverage}");

Результат работы программы представлен на рисунке 1.17

Рисунок 1.17 — Результат работы программы 5.1

1.6 Лабораторная работа №6. Коллекции

Задание 6.1:Разработайте консольное приложение на языке программирования C#, которое будет моделировать систему управления транспортными средствами на автостоянке. Реализуйте следующие функции, используя различные типы коллекций: List: Используйте список для хранения информации о транспортных средствах, припаркованных на стоянке. Реализуйте возможность добавления, удаления и поиска транспортных средств в списке. Stack: Создайте стек для моделирования системы стоянки с

32

ограниченным доступом. При добавлении нового транспортного средства на стоянку, его должно быть возможно поместить только вверху стека. При удалении транспортного средства оно должно быть извлечено с вершины стека. Queue: Реализуйте очередь для моделирования ожидания доступного места на стоянке. Когда на стоянке освобождается место, транспортное средство из очереди должно быть автоматически припарковано. Сценарии: добавление новых транспортных средств, их удаление, поиск, а также управление доступом к стоянке через стек и очередь.

Ниже представлен исходный код данной программы на языке программирования С sharp.

using System.Collections; using System.Numerics;

using System.Runtime.CompilerServices;

/// List \\\

static void List()

{

List<Vehicle> parkedVehicles = new List<Vehicle>(); do

{

Console.WriteLine("Выберите действие:"); Console.WriteLine("1. Добавить транспортное средство"); Console.WriteLine("2. Удалить транспортное средство"); Console.WriteLine("3. Найти транспортное средство"); Console.WriteLine("Нажмите Escape для выхода");

string ch = Console.ReadLine(); if (int.Parse(ch) == 1)

{

AddVehicle(parkedVehicles);

}

33

else if (int.Parse(ch) == 2)

{

RemoveVehicle(parkedVehicles);

}

else if (int.Parse(ch) == 3)

{

FindVehicle(parkedVehicles);

}

else if (int.Parse(ch) == 4) { break; }

}

while (true);

static void AddVehicle(List<Vehicle> parkedVehicles)

{

Console.WriteLine("Name: "); string name = Console.ReadLine(); Console.WriteLine("Numb: "); string Numb = Console.ReadLine();

Vehicle newV; newV.Name = name; newV.Numb = Numb;

parkedVehicles.Add(newV);

}

static void RemoveVehicle(List<Vehicle> parkedVehicles)

{

Console.WriteLine("Введите номер: "); string removenum = Console.ReadLine();

34

for (int i = 0; i < parkedVehicles.Count; i++)

{

if (parkedVehicles[i].Numb == removenum)

{

parkedVehicles.RemoveAt(i); return;

}

}

Console.WriteLine("Такого ср-ва нет.");

}

static void FindVehicle(List<Vehicle> parkedVehicles)

{

Console.WriteLine("Введите номер: "); string findnum = Console.ReadLine(); foreach (Vehicle vehicle in parkedVehicles)

{

if (vehicle.Numb == findnum)

{ Console.WriteLine($"{vehicle.Numb},{vehicle.Name}"); return; }

}

Console.WriteLine("Такого ср-ва нет.");

}

}

/// Stack \\\

static void Stack()

{

Stack<Vehicle> parkedVehiclesS = new Stack<Vehicle>();

35

do

{

Console.WriteLine("Выберите действие:"); Console.WriteLine("1. Добавить транспортное средство"); Console.WriteLine("2. Удалить транспортное средство"); Console.WriteLine("3. Найти транспортное средство"); Console.WriteLine("Нажмите Escape для выхода");

string ch = Console.ReadLine(); if (int.Parse(ch) == 1)

{

AddVehicleS(parkedVehiclesS);

}

else if (int.Parse(ch) == 2)

{

RemoveVehicleS(parkedVehiclesS);

}

else if (int.Parse(ch) == 3)

{

FindVehicleS(parkedVehiclesS);

}

else if (int.Parse(ch) == 4) { break; }

}

while (true);

static void AddVehicleS(Stack<Vehicle> parkedVehiclesS)

{

Console.WriteLine("Name: "); string name = Console.ReadLine(); Console.WriteLine("Numb: "); string Numb = Console.ReadLine();

36

Vehicle newV; newV.Name = name; newV.Numb = Numb;

parkedVehiclesS.Push(newV);

}

static void RemoveVehicleS(Stack<Vehicle> parkedVehiclesS)

{

if (parkedVehiclesS.Count > 0)

{ Vehicle removed = parkedVehiclesS.Pop(); Console.WriteLine($"Был убран {removed.Name} с номером {removed.Numb}"); return; }

else

{

Console.WriteLine("Ср-тв на стоянке нет");

}

}

static void FindVehicleS(Stack<Vehicle> parkedVehiclesS)

{

if (parkedVehiclesS.Count > 0)

{ Vehicle f = parkedVehiclesS.Peek(); Console.WriteLine($"Последнее ср-во имеет название {f.Name} и номер {f.Numb}"); return; }

else { Console.WriteLine("Ср-тв на стоянке нет"); }

}

}

/// Queue \\\

static void Queue()

37

{

Queue<Vehicle> parkedVehiclesQ = new Queue<Vehicle>(); Queue<Vehicle> parkedVehiclesAD = new Queue<Vehicle>(); do

{

Console.WriteLine("Выберите действие:"); Console.WriteLine("1. Добавить транспортное средство"); Console.WriteLine("2. Удалить транспортное средство"); Console.WriteLine("3. Найти транспортное средство"); Console.WriteLine("Нажмите Escape для выхода");

string ch = Console.ReadLine(); if (int.Parse(ch) == 1)

{

AddVehicleQ(parkedVehiclesQ, parkedVehiclesAD);

}

else if (int.Parse(ch) == 2)

{

RemoveVehicleQ(parkedVehiclesQ);

}

else if (int.Parse(ch) == 3)

{

FindVehicleQ(parkedVehiclesQ, parkedVehiclesAD);

}

else if (int.Parse(ch) == 4) { break; }

}

while (true);

static void AddVehicleQ(Queue<Vehicle> parkedVehiclesQ, Queue<Vehicle> parkedVehiclesAD)

{

38

Console.WriteLine("Name: "); string name = Console.ReadLine(); Console.WriteLine("Numb: "); string Numb = Console.ReadLine();

Vehicle newV; newV.Name = name; newV.Numb = Numb;

if (parkedVehiclesQ.Count < 1)

{ parkedVehiclesQ.Enqueue(newV); }

else { parkedVehiclesAD.Enqueue(newV); }

}

static void RemoveVehicleQ(Queue<Vehicle> parkedVehiclesQ)

{

if (parkedVehiclesQ.Count > 0)

{ Vehicle removed = parkedVehiclesQ.Dequeue(); Console.WriteLine($"Был убран {removed.Name} с номером {removed.Numb}"); return; }

else

{

Console.WriteLine("Ср-тв на стоянке нет");

}

}

static void FindVehicleQ(Queue<Vehicle> parkedVehiclesQ, Queue<Vehicle> parkedVehiclesAD)

{

if (parkedVehiclesQ.Count == 1)

39

{ Vehicle f = parkedVehiclesQ.Peek(); Console.WriteLine($"Последнее ср-во имеет название {f.Name} и номер {f.Numb}"); return; }

else {; Vehicle removedad = parkedVehiclesAD.Dequeue(); parkedVehiclesQ.Enqueue(removedad); Console.WriteLine($"Имеется свободное место, поэтому было добавлено ср-во с названием {removedad.Name} и номер {removedad.Numb}"); }

}

}

/// Scenario \\\

do

{

Console.WriteLine("Выберите действие:"); Console.WriteLine("1.List"); Console.WriteLine("2.Stack"); Console.WriteLine("3.Queue"); Console.WriteLine("Нажмите Escape для выхода");

string ch = Console.ReadLine(); if (int.Parse(ch) == 1)

{

List();

}

else if (int.Parse(ch) == 2)

{

Stack();

}

else if (int.Parse(ch) == 3)

{

Queue();

40

Соседние файлы в предмете Основы программирования