Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / Laba_varik1_7.2.docx
Скачиваний:
7
Добавлен:
10.06.2023
Размер:
216.72 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатика»

Лабораторная работа №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 варианта его использования:

  1. Расширить алгоритм внутри функции, но тогда он будет выбирать необходимое значение из фиксированного количества переменных, также при наращивании количества входных чисел – алгоритм будет заметно усложняться.

  2. Использовать функцию этого алгоритма несколько раз, условно при поиске максимального значения из 3-х переменных сначала найти максимальное значение среди первых двух чисел, затем его также сравнить с третьим. Это в той же мере усложнит работу с этим алгоритмом, и при вызове этой функции может произойти путаница.

Рисунок 3 – блок-схема реализации функции main

В главной функции main после ввода всех исходных данных идёт проверка на соответствие атрибута выбора принципа расчёта с возможным. При неверно введённых данных программа выдаст ошибку, оповещающую об этой проблеме. Затем функция Switch определяет ветку, по условиям которой решается задача.

Соседние файлы в папке лабы