Добавил:
Если чем-то мне удалось вам помочь, то благодарность принимаю на эту карту: 2200 2460 1776 0607 Для защищенки 5 сем: https://t.me/+h5cc9QNQe19kODVi Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

laba6

.docx
Скачиваний:
0
Добавлен:
10.10.2023
Размер:
327.26 Кб
Скачать

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

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

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

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

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

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

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

по теме:

«Основы алгоритмизации, базовые алгоритмические структуры и метод пошаговой детализации»

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

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

Выполнил: студент гр. БИН2104 Зайцева О.С.

Вариант 9

Проверил:

Москва, 2021 г.

Содержание

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

  2. Формализация и уточнение задания. 3

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

Рисунки со схемами алгоритмов процедур на различных этапах метода пошаговой детализации и схемой иерархии процедур; пояснение к ним (берутся из отчёта по лабораторной работе 3).

  1. Программный код проекта. 6-8

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

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

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

Определить площадь правильной n-угольников (10-угольника; 50-угольника; 100-угольника), вписанных ы окружность радиуса R.

  1. Формализация задания

Из условий видно, что для вычисления площади правильного n-угольника потребуется три формулы.

Сторона правильного n-угольника находится по формуле:

, - радиус вписанной окружности.

Площадь найдём по формуле:

Вводимыми исходными данными задачи являются значения переменных R (радиус описанной окружности) и n (количество сторон многоугольника), а выводимым результатом решения – значение S.

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

Начнём проектирование алгоритма методом «сверху вниз».

3.1) На самом верхнем (первом) уровне алгоритм решения задачи можно укрупненно представить в виде вызова главной процедуры с именем main (рисунок 1), где Calc_S (процедура) вычисления значения S по заданным значениям переменных R и n.

Рисунок 1 – Укрупненная схема алгоритма main

3.2) На втором уровне детализируем алгоритм процедуры Calc_S, представив его в виде последовательности следующих трех процедур (рисунок 2):

  • Процедура вызова значений R и n с именем get_Rn;

  • Процедуры вычисления S с именем comp_s;

  • Процедуры вывода вычисленного значения площади с именем put_s.

Рисунок 2 – Результат второго уровня детализации алгоритма

3.3) Перейдём к следующему, третьему уровню детализации. Процедуры get_Rn и put_s дальнейшей детализации не требуют, так как средства ввода-вывода имеются в любом языке программирования. Поэтому на следующем уровне, третьем шаге детализируем алгоритм процедуры вычисления S comp_s (рисунок 3).

Рисунок 3 – Схема алгоритма процедуры comp_s

Для вычисления S необходимо вычислить два значения a и r.

Схема иерархии процедур для решения задачи изображена на рисунке 4.

Рисунок 4 - Схема иерархии процедур для решения задачи

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

Чтобы избежать «двухэтажности» при разработке программного проекта, реализуем процедуру Calc_s в главной функции main.

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

Программный код проекта представлен ниже под номерами листингов 5-7.

В первый файл с именем getput.cpp (листинг 5) запишем функции ввода исходных данных get_Rn и вывода put_s. Обе эти функции типа void, так как не имеют возвращаемого значения. Функция ввода значения R и n get_Rn имеет два входных параметра и ни одного выходного. Функция put_s имеет один выходной параметр и ни одного входного. Так как функции имеют объекты cin и cout, то в нём присутствую директивы #include <iostream> и using namespace std.

Во втором файле с именем calc.cpp (листинг 6) записаны функции, выполняющие необходимые вычисления для решения задачи. Функция formula_s определена как функция с двумя входными параметрами R, n и одним выходным параметром s.

// Файл getput.cpp

#include <iostream>

using namespace std;

// Определение функции ввода R и n

void get_Rn(double& R, double& n)

{

setlocale(LC_ALL, "rus");

cout << "Введите значение радиуса (R):";

cin >> R;

cout << "Введите кол-во сторон (n):";

cin >> n;

}

// Определение функции вывода S

void put_s(double s)

{

setlocale(LC_ALL, "rus");

cout << "Площадь =" << s << endl;

}

Листинг 5 – Программный код файла с именем get_Rn и put_s

// Файл calc.cpp

#include <cmath>

//Определение функции formula_a

double formula_a(double n, double R)

{

double PI;

PI = 3.14159265;

double a = 2 * R * sin(PI / n);

return a;

}

// Определение функции formula_r

double formula_r(double n, double R)

{

double PI;

PI = 3.14159265;

double r = R * cos(PI / n);

return r;

}

// Определение функции formula_s

double formula_s(double n, double R)

{

return 0.5 * (formula_a(n, R)) * (formula_r(n, R)) * n;

}

Листинг 6 – Программный код файла с именем calc.cpp

В третьем файле с именем main.cpp (листинг 7) находится главная функция main, программный код которой содержит только вызовы разработанный функций ввода исходных данных, решение задачи и вывода результата. В этом файле присутствуют директивы препроцессора #include <iostream>, необходимая для команды задержки закрытия консольного окна system(“Pause”). Перед определением функции main в файл включены прототипы вызываемых в ней функций get_Rn, comp_s и put_s.

// Файл main.cpp

#include <iostream>

//Прототипы вызываемых функций

void get_Rn(double&, double&);

double formula_s(double, double);

void put_s(double);

// Определение главной функции main

int main()

{

double R, n;

double s;

get_Rn(R, n);

s = formula_s(n, R);

put_s(s);

system("Pause");

return 0;

}

Листинг 7 – Программный код файла с именем main.cpp

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

Протестируем проект при двух значениях входных переменных R и n: R=12 и n=4, R=10 и n=50.

Расчет на калькуляторе значение S при R=12 и n=4 даёт следующий результат: S= 288.

Расчет на калькуляторе значение S при R=10 и n=50 даёт следующий результат: S= 313.333.

Результаты выполнения проекта при R=12 и n=4 приведены на картинке 8, при R=10 и n=50 на картинке 9.

Картинка 8 – Результат выполнения проекта при R=12 и n=4

Картинка 9 – Результат выполнения проекта при R=10 и n=50

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

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

При R=12 и n=4 площадь многоугольника равна 288.

При R=10 и n=50 площадь многоугольника равна 313.3 .

Соседние файлы в предмете Информатика