лабы / Laba_varik20_6
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №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