- •Общее задание.
- •Индивидуальное задание на разработку проекта.
- •Формализация и уточнение задания.
- •Разработка схем алгоритмов.
- •Разработка программного кода проекта.
- •Программный код файла getPut.Cpp.
- •Программный код файла solve.Cpp.
- •Программный код файла mail.Cpp.
- •Список используемой литературы и ресурсов.
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ
КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа № 7
«Программная реализация алгоритмов решения сложных задач»
По теме
«Логические данные и выражения.
Операторы разветвления VС++. Программная реализация базовых разветвляющиеся структур и
типовых алгоритмов»
по дисциплине
«Информатика»
Выполнил:
Вариант 6
Проверил:
Москва, 2021 г.
1. Общее задание. 3
2. Индивидуальное задание на разработку проекта. 4
3. Формализация и уточнение задания. 4
4. Разработка схем алгоритмов. 6
a. Схема алгоритма Solve1. 6
b. Схема алгоритма Solve2. 7
c. Схема алгоритма Solve3. 8
5. Разработка программного кода проекта. 8
a. Программный код файла getPut.cpp. 8
b. Программный код файла solve.cpp. 9
c. Программный код файла mail.cpp. 10
6. Выполнение разработанного проекта. 11
a. Результат выполнения проекта, с не попавшей точкой в допустимые значения. 11
b. Результат выполнения проекта, с попавшей точкой в допустимые значения. 12
7. Проверка правильности результатов. 12
8. Список используемой литературы и ресурсов. 13
Общее задание.
1) Изучите вопросы представления логического типа данных и логических
выражения, формализации, алгоритмизации и программирования алгоритмов при решении задач, использующих разветвляющиеся структуры.
2) Разработка проекта.
2.1) Выберите вариант задания из таблиц 7.1 для создания проекта:
2.2) Выполните этап формализации задачи, для которой необходимо:
• нарисовать рисунок, указанный в задании;
• выделить на рисунке заданную область;
• для выделенной области определить и записать логическое выражение с условием, зависимое от двух переменных x и y (где
[x,y] координаты точки), принимающую логическое значение
false (0) или true (1), в зависимости от попадания или не
попадания точки с координатами X, Y в выделенную область
рисунка.
• разработайте три функциональных алгоритма и соответствующие программные функции для решения поставленной задачи согласно индивидуальному заданию o использующие только сложное логические выражения;
• программный код функции ввода исходных данных;
• программный код функции вывода результатов;
• программный код главной функции main, которая вызывает
описанные выше функции для решения поставленной задачи.
2.3) Создайте консольный проект, содержащий 3 раздельно откомпилированных файла:
• файл, содержащий функцию ввода исходных данных и функцию
вывода результатов;
• файл с тремя разработанными функциями, соответствующие
разработанным функциональным алгоритмам;
• файл с главной функцией, которая должна содержать только
операторы вызова разработанных функций (ввода, 3 функции
решения задачи разными способами и вывода, причем обмен
данными между функциями должен осуществляться через
параметры, без использования глобальных переменных.
2.4) Подготовьте тестовые исходные данные для
решения задачи.
2.5) Выполните проект и получите результаты.
2.6) Докажите правильность полученных результатов на заранее
разработанных нескольких тестовых данных.
Индивидуальное задание на разработку проекта.
Вариант 6:
Заданы две простых фигуры: ромб с центром в начале координат со
стороной 1.41 и вписанный в него квадрат с вершинами в центре сторон
ромба. Попадет ли точка с координатами X, Y в следующую фигуру:
ромб без квадрата.
Формализация и уточнение задания.
Построены «вручную» описанная в постановке задаче фигура, которая определяет область попадания точки в заданную геометрическую фигуру
(рисунок 1).
Рисунок 1. — Построение фигуры, данной в индивидуальном задании: Ромб со сторонами 1.41 и точками A, B, C и D и вписанный в него квадрат.
Условие задачи такого, что принимающие значение true точки, которые задаются пользователем, находятся между сторонами квадрата.
На рисунке видно, что точки E, F, G и H находятся на координатах (0, -1), (1, 0), (0,1) и (0, -1) соответственно. Это можно проверить, найдя диагональ ромба ABCD:
Подставим значения:
Разделив диагональ EG на 2, мы получим 1, что является длиной от начальной точки (0, 0) до любой из точек квадрата EFGH, что и требовало доказать.
Определим уравнения прямых EF, FG, GH и EH, которые ограничивают заданная область:
Каждая прямая делит координатную плоскость на две части. Теперь вместо уравнений необходимо записать неравенства, выполнения которых необходимо для попадания точки в заданную область. В этой задаче неравенства должны выполняться одновременно, поэтому они записаны в одной системе четырёх неравенств:
Данную систему можно заменить на другую, которая состоит из двух неравенств. Таким образом, для того, чтобы точка с заданными пользователем координатами x и y принадлежала квадрату EFGH необходимо выполнение этих условий:
Данную систему неравенств можно представить логическим выражением: