МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №7.2
«Разработка проекта, решающего задачу
вычисления сложного выражения с условием и выбора
наименьшего (наибольшего) из нескольких значений»
По теме:
«Логические данные и выражения. Операторы разветвления VC++. Программная реализация базовых разветвляющиеся структур и типовых алгоритмов»
по дисциплине
«Информатика»
Выполнил:
Проверил:
Москва, 2021 г
Общее задание
1) Изучите вопросы представления логического типа данных и логических выражения, формализации, алгоритмизации и программирования алгоритмов при решении задач, использующих разветвляющиеся структуры.
2) Разработка проекта.
2.1) Выберите вариант задания из таблиц 7.2 для создания проекта.
2.2) Выполните этап формализации задачи.
2.3) Разработайте:
• два функциональных алгоритма и соответствующие программные функции для решения поставленной задачи согласно индивидуальному заданию:
o первые для вычисления значения выражения с условием, используя базовые алгоритмы и нахождением наибольшего и наименьшего значений без использования вспомогательных функций min и max; вторые для вычисления значения выражения с условием, используя свои разработанные алгоритмы и соответствующие функций, вычисляющие минимальное и максимальное из двух задаваемых значений.
o использующая только сложное логические выражения;
• программный код функции ввода исходных данных;
• программный код функции вывода результатов;
• алгоритм главной функции main и его программную реализацию,
в которых осуществляется вызов разработанных функций ввода исходных данных, двух разработанных функции решения задачи и функции вывода результатов.
2.4) Создайте консольный проект, содержащий три раздельно откомпилированных файла:
• файл, содержащий функцию ввода исходных данных и функцию вывода результатов;
• файл с четырьмя разработанными функциями, соответствующие разработанным функциональным алгоритмами;
• файл с главной функцией, которая должна содержать только операторы вызова разработанных функций (ввода, две функции решения задачи разными способами и вывода), причем обмен данными между функциями должен осуществляться через параметры, без использования глобальных переменных.
2.5) Подготовьте тестовые исходные данные для контрольного
решения задачи.
2.6) Выполните проект и получите результаты.
2.7) Докажите правильность полученных результатов на заранее
разработанных нескольких тестовых данных.
Индивидуальное задание на разработку проекта
Создать приложение (решение), состоящее из трех проектов в соответствии с общим заданием для вычисления условной функции:
Формализация и уточнение задачи
Алгоритм решения данной задачи представляет собой комбинацию вычисления сложного выражения с условием и выбора наименьшего (наибольшего) из нескольких значений, используя все виды разветвлений. Можно решить эту задачу двумя способами:
Первый способ
Создать функциональный алгоритм и соответствующую программную функцию, используя вложенные разветвления с базовыми алгоритмами нахождения наибольшего и наименьшего значений без использования библиотечных функций max и min.
Второй способ
Создать функциональный алгоритм и соответствующую программную
функцию, используя вложенные разветвления и разработанные свои алгоритмы, и программные функции нахождения наибольшего и наименьшего из двух значений.
Рисунок 1 – Схема алгоритма MyMax
Алгоритм MyMax использует обычный метод сортировки массива пузырьком. На вход он получает 3 значения: A, B, C, создаёт из них массив. Далее с помощью 2-х циклов и вспомогательной переменной меняет местами значения переменных. Затем функция возвращает первый член массива, который и является максимальным. Его несомненная польза в том, что при необходимости можно изменить условия задачи и просто расширить объём входных данных(рис. 1).
Алгоритм razv_max – вычисление наибольшего из двух чисел
Этот алгоритм использует обычное условие, в котором сравнивает 2 числа. Так, если A больше B, то функция вернёт значение A, а в противном случае B(рис. 2).
Рисунок 2 – Схема алгоритма razv_max
Рисунок 2 – Схема алгоритма Pred, использующая предопределённые алгоритмы Из положительных черт такого принципа реализации алгоритма поиска наибольшего числа это то, что он легко реализуем, даже по блок-схеме видно, что он невероятно прост. Но при поиске максимального значения по выборке из трёх и более значений есть 2 варианта его использования:
Расширить алгоритм внутри функции, но тогда он будет выбирать необходимое значение из фиксированного количества переменных, также при наращивании количества входных чисел – алгоритм будет заметно усложняться.
Использовать функцию этого алгоритма несколько раз, условно при поиске максимального значения из 3-х переменных сначала найти максимальное значение среди первых двух чисел, затем его также сравнить с третьим. Это в той же мере усложнит работу с этим алгоритмом, и при вызове этой функции может произойти путаница.
Рисунок 3 – блок-схема реализации функции main
В главной функции main после ввода всех исходных данных идёт проверка на соответствие атрибута выбора принципа расчёта с возможным. При неверно введённых данных программа выдаст ошибку, оповещающую об этой проблеме. Затем функция Switch определяет ветку, по условиям которой решается задача.