Загрузил Reliend

Алгоритмы и структуры данных Лобода

реклама
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ) ДГТУ в г. Азове
Факультет «Высшего образования»
Кафедра «Вычислительная техника и программирование»
КОНТРОЛЬНАЯ РАБОТА
Дисциплина (модуль) «Алгоритмы и структуры данных»
Направление подготовки 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 с.
Скачать