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

лабы / Laba_varik15_6

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

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

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

__________________________________________________________________

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

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

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

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

по одноименной Теме 5

Выполнил: студент гр.. Вариант №15

Проверил:

Москва, 2021 г.

Оглавление:

1)Введение.

2)Общее и индивидуальное задание.

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

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

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

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

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

Введение.

Настоящий реферат написан с учетом требований к оформлению отчета по лабораторным работам в соответствии с ГОСТ 2.105-95. В ходе лабораторной работы были поставлены следующие задачи:

1) Повторение материала, изложенного в Темах 2-4.

2) Изучение материала Темы 5 «Программная реализация алгоритмов решения сложных задач».

3) Выберите индивидуальный вариант задания из таблицы 6.1.

4) Запишите заданные или полученные в процессе формализации математические формулы на языке программирования VС++.

5) Проанализируйте разработанные в лабораторной работе 3 функциональные алгоритмы на различных этапах метода пошаговой детализации и схему их иерархии. Изобразите все схемы, используя средства MS Visio.

6) Разработайте программный код функций VC++ по алгоритмам из п. 5

7) Создайте консольный проект, содержащий три файла исходного кода: файл с главной функцией main, файл с функциями ввода и вывода данных и

файл с функциями, решающими предписанные задачи. Обмен данными

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

Главная функция main должна содержать только операторы вызова

разработанных функций.

8) Подготовьте варианты исходных данных для тестирования проекта.

9) Выполните проект и получите результаты.

10) Докажите правильность результатов.

Общее и индивидуальное задание.

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

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

В качестве вводимых параметров фиксируются 7 переменных a,b,c,A,B,W,r типа double. Дальше необходимо создать функцию для определения стороны при входных данных r и a1или b1или c1.

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

Алгоритм проектируется методом «сверху вниз»:

На самом верхнем (первом) уровне алгоритм решения задачи укрупненно представлено в виде вызова главной процедуры с именем main (рисунок 1), где Al (процедура) вычисления значений сторон через переменные R и A,B,W.

Рисунок 1 – Схема алгоритма main.

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

• процедура ввода значения радиуса r затем процедура ввода углов a1,b1,c1;

• процедура вычисления сторон c именем calc_al;

• процедура вывода вычисленных значений;

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

Третий уровень детализации. На следующем уровне детализируется алгоритм процедуры вычисления Calc_AL (рисунок 3):

Рисунок 3 – Схема алгоритма S.

Углубляясь в процедуру Length(X), мы видим формулу, в которую подставляем переменные. (см. рис. 4)

Рисунок 4 – Схема процедуры CalcR.

С помощью схем, изображенных ранее, мы можем с легкостью составить схему иерархии процедур. (см. рис. 5).

Рисунок 5 – Иерархия процедур.

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

Реализуем процедуру AL сразу в главной функции main. Для решения задачи был создан проект, с главной функцией main, создана функция Length. Программный код проекта представлен ниже.

#include <iostream>

#include <cmath>

using namespace std;

double length(double x, double r) {

const double pi = acos(-1);

double o;

o = abs(sin(x * pi / 180) * 2 * r);

return o;

}

void func1(double A, double B, double W, double r, double& a, double& b, double& c)

{

a = length(A, r);

b = length(B, r);

c = length(W, r);

}

int main() {

setlocale(LC_ALL, "rus");

double a, b, c, A, B, W, r;

cout << "Ввод R = ";

cin >> r;

cout << endl << "Ввод A = ";

cin >> A;

cout << endl << "Ввод B = ";

cin >> B;

W = 180 - A - B;

func1(A, B, W, r, a, b, c);

cout << endl << "результат a = " << a << endl;

cout << endl << "результат b = " << b << endl;

cout << endl << "результат c = " << c << endl;

system("PAUSE");

return 0;

}

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

Протестируем проект на следующих входных параметрах: R=100 A=30 B=60 W=90.

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

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

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

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