1 курс / Отчет Основы Программирования
.pdf}
else if (x == 1)
{
Random rand = new Random();
Console.WriteLine($"Вводите символы которые видите на экране"); do
{
kod = rand.Next(1040, 1103); neededKey = (char)kod; Console.Write(neededKey);
pressedKey = Console.ReadKey(true).KeyChar; esc = (ConsoleKey)pressedKey;
if (neededKey != pressedKey)
{
Console.WriteLine();
Console.WriteLine("Ошибка!");
Console.Beep();
d = 0;
}
else
{
d = d + 1; a = a + 1;
Console.WriteLine("\nПравильно: " + d);
}
}
while (esc != ConsoleKey.Escape); Console.WriteLine("\nПравильно введенных символов: " + a);
}
}
catch (FormatException) { Console.WriteLine("Неверный формат"); }
Результат работы программы представлен на рисунке 1.31.
31
Рисунок 1.30 – Отладка программы
Рисунок 1.31 – Конечный результат
Рисунок 1.32 – Проверка на валидность
32
1.5 Лабораторная работа №5. Структуры.
Задание: составить консольное приложение для решения следующей задачи: дан список учащихся из 10 записей. Каждая запись имеет поля: фамилия, имя, номер класса, буква класса. Найти двух учащихся, у которых совпадают имя и фамилия. Предусмотреть возможность генерации экземпляра структуры, предоставить пользователю выбор генерации очередной записи или ручной ввод. Предусмотреть обработку ошибок ввода, при это при возникновении исключения программа не должна прерывать свою работу.
Графический способ описания алгоритма представлен на рисунке 1.33.
33
Рисунок 1.33 – Блок-схема к заданию 5
34
Листинг кода:
int count = 0;
try
{
Klass[] students = new Klass[10];
Console.WriteLine("Введите фамилию и имя ученика 1:");
students[0] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 2:");
students[1] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 3:");
students[2] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 4:");
students[3] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 5:");
students[4] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 6:");
students[5] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 7:");
students[6] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
35
Console.WriteLine("Введите фамилию и имя ученика 8:");
students[7] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 9:");
students[8] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
Console.WriteLine("Введите фамилию и имя ученика 10:");
students[9] = new Klass { name = Console.ReadLine(), surname = Console.ReadLine(), grade = new Random().Next(1, 11), letter = (char)new Random().Next(1072, 1101) };
for (int i = 0; i < students.Length; i++)
{
for (int j = i + 1; j < students.Length; j++)
{
if (students[i].name == students[j].name && students[i].surname == students[j].surname)
{
count += 1;
Console.WriteLine("Найдены учащиеся с одинаковыми именем и
фамилией:");
Console.WriteLine("{0} {1} из классов {2}{3} и {4}{5}", students[i].name, students[i].surname, students[i].grade, students[i].letter, students[j].grade, students[j].letter);
}
}
}
if (count == 0)
{
Console.WriteLine("Учащихся с одинаковыми именем и фамилией нет :(");
}
}
catch (Exception)
{
Console.WriteLine("Что-то пошло не так :(");
}
36
public struct Klass
{
public string surname; public string name; public int grade; public char letter;
}
Результат работы программы представлен на рисунке 1.35.
Рисунок 1.34 – Отладка программы
Рисунок 1.35 – Конечный результат
37
1.6 Лабораторная работа №6. Коллекции.
Задание: создайте консольное приложение, которое будет моделировать систему обработки заказов в интернет-магазине. Реализуйте следующие функции, используя различные типы коллекций: List: Хранение и управление списком товаров в корзине покупателя. Разрешите добавление, удаление и изменение товаров в корзине. Stack: Механизм отката последнего действия. Позвольте пользователю отменять последние действия, такие как добавление или удаление товара из корзины. Queue: Организация очереди заказов на обработку. Когда заказ обрабатывается, он удаляется из очереди. Сценарии: добавление товаров в корзину, отмена действий, обработка заказов и т. д.
Листинг кода:
using System.Collections.Generic; using System.Collections;
List<string> shoppingCart = new List<string>();
Stack<string> actionsStack = new Stack<string>();
Queue<string> orderQueue = new Queue<string>();
string num; string item;
void MainMenu() // главное меню с выбором действий
{
Console.WriteLine("Выберите действие:");
Console.WriteLine("1. Добавить товар в корзину");
Console.WriteLine("2. Удалить товар из корзины");
Console.WriteLine("3. Корзина");
Console.WriteLine("4. Очередь заказов");
Console.WriteLine("5. Отменить последнее действие");
string choice = Console.ReadLine();
38
switch (choice)
{
case "1": // добавить товар в корзину
AddToCart();
Console.Clear(); break;
case "2": // удалить товар из корзины
RemoveFromCart();
Console.Clear(); break;
case "3": // просмотреть корзину
Console.Clear();
ReviewCart(); break;
case "4": // посмотреть очередь заказов
Console.Clear();
ListOrder(); break;
case "5": // отмена последнего действия (добавить в корзину, удалить из корзины, добавить в очередь заказов)
UndoLastAction();
Thread.Sleep(1000);
Console.Clear(); break;
default:
Console.WriteLine("Некорректный выбор. Пожалуйста, выберите снова."); Console.Clear();
break;
}
MainMenu();
}
MainMenu();
void AddToCart() // добавление в корзину
{
Console.WriteLine("Введите товар для добавления в корзину:");
39
string item = Console.ReadLine();
actionsStack.Push(item); // товар и код для отмены действий actionsStack.Push("1");
shoppingCart.Add(item); Console.Write($"Добавлен товар: {item}"); Thread.Sleep(1000);
}
void AddToCartAfterDeletion() // (для отмены действий) удаление после добавления
{
item = actionsStack.Pop(); shoppingCart.Add(item);
}
void RemoveFromCart() // удалить из корзины
{
if (shoppingCart.Count > 0)
{
Console.WriteLine("Введите имя товара, который хотите удалить:"); string removedItem = Console.ReadLine();
if (shoppingCart.Contains(removedItem))
{
actionsStack.Push(removedItem); actionsStack.Push("2"); shoppingCart.Remove(removedItem); Console.Write($"Удален товар: {removedItem}"); Thread.Sleep(1000);
}
else
{
Console.WriteLine($"Товара {removedItem} нет в корзине");
Thread.Sleep(1000);
}
}
else
{
40
