МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ) ДГТУ в г. Азове Факультет «Высшего образования» Кафедра «Вычислительная техника и программирование» КОНТРОЛЬНАЯ РАБОТА Дисциплина (модуль) «Алгоритмы и структуры данных» Направление подготовки 09.03.02 Информационные системы и технологии Обозначение 09.03.02.120000.000 Номер зачетной книжки 2199414 Номер варианта 4 Группа ЗИС 21 Обучающийся _______________________ Д.А. Лобода подпись, дата Контрольную работу проверил _____________________ подпись, дата Азов 2024 преподаватель, Г.П. Мужиков Введение Целью освоения дисциплины «Алгоритмы и структуры данных» является формирование системы базовых понятий информатики и выработка умений их применения для решения практических задач. Целью освоения дисциплины является достижение следующих результатов образования: выбирать методы моделирования систем, структурировать и анализировать цели и функции систем управления, проводить системный анализ прикладной области; использовать методы научного познания в профессиональной области разрабатывать и отлаживать эффективные алгоритмы и программы с использованием современных технологий программирования формулировать требования к создаваемым программным комплексам; формировать архитектуру программных комплексов для информатизации предприятий, разрабатывать программные приложения. навыками программирования в современных средах; работы в современной программно-технической среде в различных операционных системах; разработки программных комплексов для решения прикладных задач, оценки сложности алгоритмов и программ, использования современных технологий программирования, тестирования и документирования программных комплексов. Основная часть Задание 1. Программирование алгоритмов линейной структуры Решение: Рисунок 1 — Блок схема программы Листинг 1 — Код программы int main() { double a, b, x; std::cout << "Введите значение a: "; std::cin >> a; std::cout << "Введите значение b: "; std::cin >> b; std::cout << "Введите значение x: "; std::cin >> x; double abs_x_minus_a = std::abs(x - a); double ln_abs_x_minus_a = std::log(abs_x_minus_a); double b_ln_abs_x_minus_a = b * ln_abs_x_minus_a; double exp_part = std::exp(std::abs(x - b_ln_abs_x_minus_a)); double a_squared = a * a; double sqrt_part = std::sqrt(a_squared + exp_part); double z = a + sqrt_part; double log_numerator = a - b * std::log(x); double log_denominator = a + b * std::pow(std::tan(x), 2); double abs_log_fraction = std::abs(log_numerator / log_denominator); double ln_abs_log_fraction = std::log(abs_log_fraction); z -= ln_abs_log_fraction; std::cout << "Результат z = " << z << std::endl; return 0; } Рисунок 2 — Тестирование программы Задание 2. Программирование алгоритмов разветвляющейся структуры Рисунок 3 — Блок схема алгоритма Листинг 2 — Код программы int main() { double x, y; std::cout << "Введите значение x: "; std::cin >> x; if (x <= -1) { y = std::pow(x, 2); // y = x^2 } else if (x > -1 && x <= 0) { y = std::pow(x, 3); // y = x^3 } else { y = 2 * x - 3; // y = 2x - 3 } std::cout << "Значение y = " << y << std::endl; return 0; } Рисунок 4 — Тестирование программы Задание 3. Программирование алгоритмов со многими вариантами Дано целое число от 0 до 9. Вывести строку названия соответствующей цифры на русском языке. Рисунок 5 — Блок схема алгоритма Листинг 3 — Код программы int main() { int number; std::cout << "Введите целое число от 0 до 9: "; std::cin >> number; if (number < 0 || number > 9) { std::cout << "Ошибка: введите число в диапазоне от 0 до 9." << std::endl; return 1; } switch (number) { case 0: std::cout << "ноль" << std::endl; break; case 1: std::cout << "один" << std::endl; break; case 2: std::cout << "два" << std::endl; break; case 3: std::cout << "три" << std::endl; break; case 4: std::cout << "четыре" << std::endl; break; case 5: std::cout << "пять" << std::endl; break; case 6: std::cout << "шесть" << std::endl; break; case 7: std::cout << "семь" << std::endl; break; case 8: std::cout << "восемь" << std::endl; break; case 9: std::cout << "девять" << std::endl; break; } return 0; } Рисунок 6 — Тестирование программы Задание 4. Циклические алгоритмические конструкции Рисунок 7 — Схема алгоритма Листинг 4 — Код программы int main() { int k_start, n; cout << "Введите начальное значение k: "; cin >> k_start; cout << "Введите значение n: "; cin >> n; double product = 1.0; for (int k = k_start; k <= n; ++k) { double fraction = static_cast<double>(k * k) / (k * k + 2 * k + 3); product *= fraction; } cout << "Результат произведения: " << product << endl; return 0; } Рисунок 8 — Тестирование программы Заключение В заключение можно отметить, что дисциплина «Алгоритмы и структуры данных» играет ключевую роль в подготовке специалистов, обладающих базовыми знаниями в области информатики и способных применять их для решения прикладных задач. Освоение этой дисциплины способствует формированию профессиональных компетенций, таких как умение моделировать системы, проводить системный анализ, выбирать и разрабатывать алгоритмы, а также работать с современными программными технологиями. В результате изучения курса студенты приобретают навыки программирования в различных операционных средах, способность оценивать сложность алгоритмов и владение методами тестирования и документирования программ. Эти знания и умения позволяют создавать эффективные программные комплексы, способствующие автоматизации и информатизации рабочих процессов в различных сферах деятельности. Список информационных ресурсов 1. Ахо Альфред В. Структуры данных и алгоритмы: Вильямс / пер. с английского и ред. Минько А. А., Ахо Альфред В., Хопкрофт Джон Э., Ульман Джеффри Д. — М. и др.: Вильямс, 2001. – 382 с. 2. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦМНО, 1999. – 960 с. 3. Кнут Д.Э. Искусство программирования: в 3-x томах. — 2-е издание. – М.: Мир, 1976 – 1978 .(3-е изд.: Вильямс, 2010) 4. Левитин А.В. Алгоритмы: введение в разработку и анализ. – М.: Издательский дом «Вильямс», 2006. – 576 с. 5. Макконнелл Дж. Основы современных алгоритмов. 2-е изд., доп. – М.: Техносфера, 2004. – 368 с. 6. Макконелл, Дж. Анализ алгоритмов. Вводный курс / Дж. Макконелл,- М.: Техносфера, 2002,- 304 с. 7. Вирт Никлаус Алгоритмы и структуры данных: Нев. Диалект / Вирт Никлаус, [перевод с английского Д. Б. Подшивалова] — 2-е изд., испр. — СПб.: Нев. Диалект, 2001. — 351с. 8. Скиена С. Алгоритмы. Руководство по разработке. – 2-е изд. – СПб.: БХВПетербург, 2011. – 720 с. 9. Седжвик Р. Фундаментальные алгоритмы на С++. Части 1 — 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах: Пер. с англ. – К.: Издательство “ДиаСофт”, 2001. 10. Окулов С.М. Программирование в алгоритмах. – 3-е изд. – М.: БИНОМ. Лаборатория знаний, 2007. – 383 с. 11. Шень А. Программирование: теоремы и задачи. М., МЦНМО, 2-е издание, 1995.– 263 с. 12. Sanjoy Dasgupta, Christos H. Papadimitriou, Umesh Vazirani. Algorithms. — McGrawHill Companies, Incorporated, 2006. – 336 с.