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

лаба ввит 4

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

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

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

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

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

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

««Разработка консольных проектов Visual Studio

с использованием функций VC++»

по теме

«Разработка алгоритмов решения сложных задач методом пошаговой детализации и их программная реализация»

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

«Введение в информационные технологии»

Выполнил: студент гр. БПС2402

ГоловачеваС.М.

Вариант 9

Проверил: Волков А.И.

Москва, 2024 г.

Оглавлени

1 Общее задание 3

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

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

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

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

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

7 Тестирование программы 12

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

1 Общее задание 3

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

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

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

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

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

7 Тестирование программы 11

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

1 Общее задание

  1. Изучить основные положения технологий структурного проектирования алгоритмов и метода пошаговой детализации, средства MS Visio для графической визуализации алгоритмов.

  2. Выбрать вариант индивидуального задания из таблицы 4.1.

  3. Проанализировать постановку задачи своего варианта индивидуального задания и, если необходимо, уточнить ее у преподавателя.

  4. Провести формализацию решения задачи. Определить этапы ее решения с использованием метода пошаговой детализации.

  5. Разработать схемы алгоритмов процедур на различных этапах метода пошаговой детализации и схему иерархии процедур.

  6. Утвердить у преподавателя результаты выполнения п.п. 4-5.

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

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

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

  10. Выполнить проект с тестовыми исходными данными и получить результаты. Проверить правильность результатов.

  11. Оформить отчет по работе в среде MS Word. Изобразить все схемы, используя средства MSVisio.

  12. Представить преподавателю отчет по работе.

  13. Ответить на замечания преподавателя по выполненной работе и на заданные им вопросы по теме.

  14. Получить отметку о выполнении и защите работы.

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

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

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

Входные Данные:

R (радиус окружности): Вещественноечисло, представляющее радиус окружности, в которую вписан многоугольник. R > 0.

n (количество сторон): Целое число, представляющее количество сторон многоугольника. n >= 3.

Выходные Данные:

S (площадь n-угольника): Вещественное число, представляющее площадь n-угольника.

Промежуточные Вычисления:

a (длина стороны n-угольника): Вещественное число. Вычисляется по формуле: a = 2 * R * sin(180° / n)

r (радиус вписанной окружности): Вещественное число. Вычисляется по формуле: r = R * cos(180° / n)

g (центральный угол в радианах): Промежуточная переменная. Вычисляется как: angle = π / n 

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

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

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

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

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

  • процедура ввода значений радиуса и количества углов с именем GetR.

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

Перейдем к следующему, третьему уровню детализации. Поэтому на следующем, третьем шаге детализируем алгоритмы процедур функции PutS(рис.3) и вычисления r,a, S, g CalcR(рис. 4).

Рисунок 3 – Схема функции PutS

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

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

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

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

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

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

В первый файл с именем GetPut.cpp запишем функции ввода исходных данных GetRn и вывода результатов PutS. Обе эти функции типа void, так как не имеют возвращаемого значения.

Текст программ GetRn и PutS из файла GetPut.cpp:

// ФайлGetPut.ccp

#include <iostream>

using namespace std;

// Функция для ввода радиуса и количества углов многоугольника

void GetR(double& R)

{

setlocale(LC_ALL, "rus");

cout << "Введите радиус окружности (R): ";

cin >> R;

if (cin.fail() || R <= 0)

{

cout << "Ошибка: некорректные входные данные (R > 0)" << endl;

}

}

// Функция для вывода площади

void PutS(double S, int n)

{

setlocale(LC_ALL, "rus");

cout << "Площадь правильного " << n << "-угольника: " << S << endl;

}

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

Текст программ CalcraSg из файла Calc.cpp:

// Файл Calc.cpp

#include<cmath>// Для математических функций

#define_USE_MATH_DEFINES// ДляиспользованияM_PI

#include"math.h"

#include<iostream>

// Функция для вычисления площади правильного n-угольника

double CalcR(doubleR, intn)

{

double g = M_PI / n; // Угол в радианах

double a = 2 * R * sin(g); // Длина стороны многоугольника

double r = R * cos(g); // Радиус вписанной окружности

double S = 0.5 * a * n * r;

return S;

}

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

Текст программы функции main из файла main.cpp:

#include <iostream>

using namespace std;

void GetR(double&);

void PutS(double, int);

double calcR(double, int);

int main()

{

double R;

GetR(R);

double area10 = calcR(R, 10);

double area50 = calcR(R, 50);

double area100 = calcR(R, 100);

PutS(area10, 10);

PutS(area50, 50);

PutS(area100, 100);

return 0;

}

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

Протестируем проект при разных вариантах входных переменныхR, n:

1 вариант исходных данных:R1=10, n1=10.

2 вариант исходных данных:R2=50, n2=50.

3 вариант исходных данных: R3=100, n3=100

Расчет на калькуляторе значенийS1, S2, S3 дает следующие результаты:S1=293.893, S2=7833.33, S3=31395.3.

7 Тестирование программы

В таблице 1 приведены результаты тестирования программы

Таблица 1 – Результаты тестирования программы

R

n

S

10

10, 50, 100

293.893

313.333

313.953 (рис.5)

50

10, 50, 100

7347.32

7833.33

7848.81(рис.6)

100

10, 50, 100

29389.3

31333.3

31395.3 (рис.7)

0

4

Ошибка (рис.8)

Рисунок 5 – Результат работы программы при R = 10, n = 10, 50, 100

Рисунок 6 – Результат работы программы при R = 50, n = 10, 50, 100

Рисунок 7 – Результат работы программы при R = 100, n = 10, 50, 100

Рисунок 8 – Результат работы программы при R = 0, n = 10, 50, 100

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

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

Соседние файлы в предмете Введение в информационные технологии