Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / Laba_varik20_6

.docx
Скачиваний:
7
Добавлен:
10.06.2023
Размер:
117.66 Кб
Скачать

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

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

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

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

Лабораторная работа №6

«Программная реализация

алгоритмов решения сложных задач»

по теме

«Функции VС++ и консольные проекты

Visual Studio»

по дисциплине

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

Выполнил:

Проверил:

Москва, 2021 г.

Содержание

Индивидуальное задание……………………………………………………2

Разработка алгоритмов решения задачи……………………………………2

Разработка программного проекта………………………………….………5

Исходные данные для тестирования проекта…………….…………..……8

Результаты выполнения проекта…………………………….…………..….8

Доказательство правильности результатов выполнения проекта….……..9

Список используемой литературы………………………………………….9

Индивидуальное задание

В ычислите значения медиан треугольника, сторонами которого являются медианы исходного треугольника со сторонами a, b, c. Длина медианы, проведенной к стороне a:

Для вычисления всех медиан можно общую процедуру, вызываемую три раза. Вводимыми данными являются стороны a, b, c, а выводимыми результатами – значения ma, mb, mc.

Разработка алгоритмов решения задачи

Начнем проектирование алгоритма методом «сверху вниз». На самом верхнем уровне алгоритм решения задачи можно укрупненно представить в виде вызова главной процедуры с именем main (рисунок 1), где CalcM процедура вычисления значений медиан по заданному значению сторон.

Рисунок 1

На следующем, втором уровне, детализируем алгоритм процедуры CalсM путем представления его в виде последовательности следующих трех

процедур (рисунок 2):

• процедуры ввода значения a, b, c с именем GetABС;

• процедуры вычисления ma, mb, mc с именем CompM;

• процедуры вывода значений медиан с именем PutM.

Рисунок 2

Перейдем к следующему, третьему уровню детализации. Процедуры GetABC и PutM дальнейшей детализации не требуют, так как средства ввода вывода имеются в любом языке программирования. Поэтому на следующем, третьем шаге детализируем алгоритм процедуры вычисления ma, mb, mc CompM (рисунок 3).

Рисунок 3

На этом уровне детализации воспользуемся одной и той же процедурой GenM, которая будет вызываться из процедуры CompM 3 раза с различными параметрами.

На последнем, четвертом уровне детализации разработаем схему

алгоритма процедуры GenM, вычисляющей значение медианы по

заданным значениям сторон треугольника (рисунок 4).

Рисунок 4

Схема иерархии процедур для решения задачи (рисунок 5)

Рисунок 5

Разработка программного проекта

Для решения нашей задачи создадим проект, в котором будет три файла

исходного кода: помимо файла с главной функцией main создадим файл с функциями GetABC и PutM для ввода и вывода и объединим в отдельный файл все остальные функции, участвующие в решении задачи.

В первый файл с именем GetPut.cpp (рисунок 6) запишем функции ввода исходных данных GetABC и вывода результатов PutM. Обе эти функции типа void, так как не имеют возвращаемого значения. Функция ввода значения a, b, c GetABC имеет три выходных параметра и ни одного входного параметра. Функция PutM, предназначенная для вывода ma, mc, mb, имеет 3 входных параметра и ни одного выходного параметра. Так как функции этого файла используют объекты cin и cout, то в нем присутствуют директивы #include <iostream> и using namespace std.

Во второй файл с именем Calc.cpp (рисунок 7) запишем функции, выполняющие необходимые вычисления для решения задачи. Функция CompM определена как функция с тремя входными параметрами и тремя выходными параметрами. Возвращаемого значения функция не имеет.

Функция GenM, медиану, имеет три входных параметра (значение длин сторон) и возвращаемое значение – вычисленную величину медианы.

Рисунок 6

Рисунок 7

Так как функция CompM определена перед вызываемой ею функцией GenM, то в начале файла записан прототип функции GenM.

В третьем файле с именем main.cpp (рисунок 8) находится главная функция main, программный код которой содержит только вызовы разработанных функций ввода исходных данных, решения задачи и вывода результатов. В этом файле присутствует директива препроцессора #include <iostream>, необходимая для команды задержки закрытия консольного окна system("PAUSE"). Перед определением главной функции main в файл включены прототипы вызываемых в ней функций GetABC, CompM и PutM.

Рисунок 8

Исходные данные для тестирования проекта

Протестируем проект при значениях a=3; b=4; c=5 и a=3; b=6; c=6.

Расчет на калькуляторе в первом случае дает ma=4,27; mb=3,60; mc=2,5.

Расчет на калькуляторе при втором случае дает ma=5,81; mb=3,67; mc=3,67.

Результаты выполнения проекта

Результаты выполнения проекта в первом случае приведены на рисунке 9, при втором на рисунке 10.

Рисунок 9

Рисунок 10

Доказательство правильности результатов выполнения проекта

Правильность результатов выполнения проекта подтверждается их совпадением с результатами контрольных вычислений на калькуляторе для обоих вариантов исходных данных.

Список используемой литературы

Лабораторная работа № 6 «Программная реализация алгоритмов решения сложных задач» по одноименной Теме 5

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