
Вариант 18 / ПР-10
.docx
-
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МИРЭА – Российский технологический университет»
РТУ МИРЭА
Институт информационных технологий
Кафедра вычислительной техники
ОТЧЕТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ №10 |
|
по дисциплине |
|
«Алгоритмические основы обработки данных»
|
|
|
|
Выполнил студент группы
|
|
Принял старший преподаватель
|
Ю.С. Асадова |
Практическая работа выполнена |
«__»_______2024г. |
|
|
«Зачтено» |
«__»_______2024г. |
Москва 2024
-
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МИРЭА – Российский технологический университет»
РТУ МИРЭА
Институт информационных технологий
Кафедра вычислительной техники
Выполнено ____________________//
Зачтено ____________________/А.С. Асадова/
Задание на практическую работу №10
Дисциплина: «Алгоритмические основы обработки данных»
Студент Шифр Группа
1. Тема: «Рекурсивные функции».
2. Срок сдачи студентом законченной работы: 20.11.2024г.
3. Исходные данные: Разработать программу, использующую рекурсивную функцию для выполнения задания
4. Задание: Вывод на экран строки в обратном порядке
5. Содержание отчета:
титульный лист;
задание;
оглавление;
введение;
основные разделы отчета;
заключение;
список использованных источников;
Руководитель работы Ю.С. Асадова ____________ «___» ____________ 2024г.
подпись
Задание принял к исполнению ____________ «___» ____________ 2024г.
подпись
СОДЕРЖАНИЕ
Y
ВВЕДЕНИЕ 4
1 ОСНОВНОЙ РАЗДЕЛ 5
2 БЛОК–СХЕМА АЛГОРИТМА 6
3 ИСХОДНЫЙ КОД 7
4 ПРИМЕР РАБОТЫ ПРОГРАММЫ 8
Заключение 9
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 10
ВВЕДЕНИЕ
В данной практической работе используется рекурсивные функции для программы выполняющую операции вывод на экран строки в обратном порядке.
Постановка задачи:
Разработать программу, использующую рекурсивную функцию для выполнения задания.
В качестве параметров выступают три функции. Первая из них это функция printReverse, эта рекурсивная функция выводит строку в обратном порядке, начиная с символа, расположенного по указанному индексу, имеет параметры const string &str. Константная ссылка на строку, которую нужно вывести в обратном порядке. Использование ссылки предотвращает создание копии строки, что делает функцию более эффективной.int index. Индекс текущего символа, который будет выводиться. Начальное значение этого параметра — длина строки минус один. Вторая это функция isValidChar, эта функция проверяет, является ли данный символ допустимым. Допустимыми считаются русские и английские буквы, а также цифры, имеет параметры char ch: Символ, который необходимо проверить на допустимость. Финальная функция main она отвечает за взаимодействия с пользователем, получение ввода и вызов других функций для обработки данных. Здесь происходит проверка корректности ввода строки и выводы строки в обратном порядке.
Необходима реализация проверки ввода на логичность введенных данных (ввести цифры либо символы английского и русского алфавита).
При успешном вводе данных пользователю должен быть выведен ответ строка в обратном порядке.
1 ОСНОВНОЙ РАЗДЕЛ
Во время работы программы пользователь вводит цифры либо символы английского и русского алфавита.
После ввода необходимых данных c помощью ветвящегося процесса будет произведена проверка введенных данных, при несоответствии с исходными, будет выведено сообщение об ошибке и завершение работы программы. Если все символы прошли проверку и являются допустимыми программа вызовет рекурсивную функцию, передавая ей строку и индекс последнего символа.
Рекурсивная функция согласно следующему алгоритму. Проверяет, не достигнут ли конец строки с помощью условия:
(1)
где index – индекс текущего символа, который будет выводится
Если условие истинно, функция завершает свою работу.
Если индекс все еще валиден, она выводит символ, расположенный по текущему индексу. Затем она рекурсивно вызывает саму себя, передавая индекс, уменьшаемый на 1, что позволяет перейти к следующему символу в строке для вывода. Этот процесс продолжается, пока не будут выведены все символы строки в обратном порядке.
После завершения рекурсивного вызова и вывода всех символов в обратном порядке, программа заканчивает работу.
2 БЛОК–СХЕМА АЛГОРИТМА
Представим описание алгоритма в графическом виде на рисунке 2.1.
Рисунок 2.1 – Блок-схема алгоритма программы
3 ИСХОДНЫЙ КОД
Программная реализация алгоритма для решения задачи представлена ниже.
Листинг 3.1 – Процедура выполнение кода по поставленной задачи
#include <iostream> #include <string> #include <cctype> using namespace std; void printReverse(const string &str, int index) { if (index < 0) { return; } cout << str[index]; printReverse(str, index - 1); } bool isValidChar(char ch) { return (isalnum(ch) || (ch >= 'а' && ch <= 'я') || (ch >= 'А' && ch <= 'Я')); } int main() { string input; cout << "Введите строку (русские и английские буквы, цифры): "; getline(cin, input);
for (char ch : input) { if (!isValidChar(ch)) { cout << "Ошибка: введены недопустимые символы. Попробуйте еще раз." << endl; return 1; } } cout << "Строка в обратном порядке: "; printReverse(input, input.length() - 1); cout << endl; return 0; } |
4 ПРИМЕР РАБОТЫ ПРОГРАММЫ
Пример работы программы, проверка на корректность введены символы !@#%^, представлено на рисунке 4.1.
Рисунок 4.1– Пример работы программы – Ошибка не подходит по условию
Пример работы программы, проверка на примере английских букв, введены символы abcdefg, представлено на рисунке 4.2.
Рисунок 4.2 – Пример работы программы – Вывод в обратном порядке символов английского алфавита.
Пример работы программы, проверка на примере русских букв, введены символы представлено на рисунке 4.3.
Рисунок 4.3 – Пример работы программы – Вывод в обратном порядке символов русского алфавита.
Пример работы программы, проверка на примере цифр, представлено на рисунке 4.4.
Рисунок 4.4 – Пример работы программы – Вывод в обратном порядке цифр.
Заключение
В ходе выполнения данной практической работы была реализована программа, использование рекурсивные функции. Также были приобретены навыки работы с математическими и логическими выражениями на языке программирования C++.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Лозовский В.В. Алгоритмические основы обработки данных: учебное пособие / Лозовский В.В., Платонова О.В., Штрекер Е.Н. — М.: МИРЭА – Российский технологический университет, 2022. – 337 с.
Платонова О.В. Алгоритмические основы обработки данных: методические указания / Платонова О.В., Асадова Ю.С., Расулов М.М. — М.: МИРЭА – Российский технологический университет, 2022. — 73 с.
Белик А.Г. Алгоритмы и структуры данных: учебное пособие / А.Г. Белик, В.Н. Цыганенко. — Омск: ОмГТУ, 2022. — 104 с. — ISBN 978-5-8149-3498-7. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/343688 (дата обращения: 06.11.2024)
Павлов Л.А. Структуры и алгоритмы обработки данных / Л.А. Павлов, Н.В. Первова. — 2-е изд., стер. — Санкт-Петербург: Лань, 2022. — 256 с. — ISBN 978- 5-507-44105-1. — Текст: электронный // Лань: электронно-библиотечная система.
Пантелеев Е.Р. Алгоритмы и структуры данных: учебное пособие / Е.Р. Пантелеев, А.Л. Алыкова. — Иваново: ИГЭУ, 2018. — 142 с. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/154576 (дата обращения: 06.11.2024)