
1 курс / Отчет Основы Программирования
.pdf
Рисунок 1.18 – Отладка программы
Рисунок 1.19 – Конечный результат
Рисунок 1.20 – Проверка на валидность
Задание 2: составить консольное приложение для решения следующей задачи: найти сумму цифр натурального числа, вводя данные в ходе выполнения программы и используя рекурсивный подход.
21

Словесный способ описания алгоритма: G.1 Начало;
G.2 Ввод user_value;
G.3 recursive(user_value);
G.4 Остановка;
Словесное описание функции recursive: H.1 Если value < 10, то Н.2, иначе Н.3;
Н.2 Вернуть value
Н.3 digit ← value % 10; H.4 new_value ← value / 10;
H.5 Вернуть digit + recursive(new_value)
Графический способ описания алгоритма представлен на рисунке 1.21.
Рисунок 1.21 – Блок-схема к заданию 3.2
22
Листинг кода:
int recursive (int value)
{
if (value < 10)
{
return value;
}
int digit = value % 10;
int new_value = value / 10;
return digit + recursive(new_value);
}
try
{
Console.Write("Введите целое число: ");
int user_value = int.Parse(Console.ReadLine()); if (user_value > 0)
{
Console.WriteLine($"Сумма цифр числа {user_value} равна {recursive(user_value)}");
}
else
{
Console.Write("Что-то пошло не так :(");
}
}
catch (Exception)
{
Console.Write("Что-то пошло не так :(");
}
Результат работы программы представлен на рисунке 1.23.
23

Рисунок 1.22 – Отладка программы
Рисунок 1.23 – Конечный результат
Рисунок 1.24 – Проверка на валидность
1.4 Лабораторная работа №4. Обработка текста.
Задание 1: составить консольное приложение для решения следующей задачи: дан текст, заканчивающийся точкой. Является ли этот текст правильной записью целого числа (возможно, со знаком)? Данные должны
24

быть введены в ходе выполнения программы. Под строками понимаются массивы символьных переменных, тип данных string использовать нельзя.
Графический способ описания алгоритма представлен на рисунке 1.25.
Рисунок 1.25 – Блок-схема к заданию 4.1
25
Листинг кода:
bool proverka = true;
Console.WriteLine("Введите строку с точкой в конце:");
try
{
string temp = Console.ReadLine(); if (temp.EndsWith(".") == true)
{
char[] array = temp.ToCharArray();
if (Array.IndexOf(array, '.') == Array.LastIndexOf(array, '.') && Array.LastIndexOf(array, '.') + 1 == array.Length)
{
string temptemp = temp.Substring(0, array.Length - 1); foreach (char symbol in temptemp)
{
if (!char.IsDigit(symbol))
{
proverka = false;
}
else
{
proverka = true;
}
}
if (proverka == true)
{
Console.WriteLine("Введенная строка является правильной записью
целого числа");
}
else
{
Console.WriteLine("Введенная строка НЕ является правильной записью
целого числа");
}
}
26

else
{
Console.WriteLine("Что-то пошло не так :(");
}
}
if (temp.EndsWith(".") == false)
{
Console.WriteLine("Что-то пошло не так :(");
}
}
catch (Exception)
{
Console.WriteLine("Что-то пошло не так :(");
}
Результат работы программы представлен на рисунке 1.27.
Рисунок 1.26 – Отладка программы
Рисунок 1.27 – Конечный результат
27

Рисунок 1.28 – Проверка на валидность
Задание 2: Разработать программу – клавиатурный тренажер. В ходе работы программы должны генерироваться символы, которые необходимо вводить пользователю, количество правильно введенных символов должно подсчитываться, при вводе неверного символа, счетчик правильно введенных символов должен обнуляться, по завершению работы тренажера результат верно введенных символов должен выводиться на экран. Выход из режима тренажера должен осуществляться по нажатию клавиши «Esc». При вводе неверного символа необходимо выдавать звуковое сопровождение (системный звук). При запуске приложения должен предоставляться выбор набор символов какого языка необходимо тренировать: русский или английский.
Графический способ описания алгоритма представлен на рисунке 1.29.
28

Рисунок 1.29 – Блок-схема к заданию 4.2
29
Листинг кода:
try
{
char neededKey, pressedKey = 'c'; int kod, a = 0, d = 0;
var esc = (ConsoleKey)pressedKey;
Console.WriteLine("Добро пожаловать в клавиатурный тренажер, выберите язык: 0- Английский, 1-Русский");
int x = int.Parse(Console.ReadLine()); if (x == 0)
{
Random rand = new Random();
Console.WriteLine($"Вводите символы которые видите на экране"); do
{
kod = rand.Next(44, 122); 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);
30