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

Магистратура Языки программирования С,C++ / Лабораторная работа №5

.docx
Скачиваний:
5
Добавлен:
22.05.2023
Размер:
311.72 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

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

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

(МТУСИ)

Кафедра: Математической кибернетики и информационных технологий

Отчёт по лабораторной работе №5

Дисциплина: «Языки программирования»

по теме:

«Функции»

Вариант №19

Выполнил: студент группы МБСТ0000

Иванов И.И.

_________________________

Проверил:

Ассистент, Соловьев Александр Сергеевич

_________________________

Москва, 2024

  1. Цель работы

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

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

Описать функцию smooth(A, n), заменяющую каждый элемент вещественного массива A размера n на его среднее арифметическое со своими соседями («сглаживание массива»). Массив A — входной и выходной параметр, n — входной параметр. С помощью этой функции выполнить пятикратное сглаживание данного массива A размера n, выводя на экран результаты каждого сглаживания.

  1. Блок-схемы алгоритмов

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

Рисунок 1 – Схема алгоритмов функций GetArray и WriteArray

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

Рисунок 2 – Схема алгоритма функции smooth

Основная функция main вызывающие другие функции, для решения индивидуального задания представлена на рисунке 2.

Рисунок 3 – Схема алгоритма функции main

  1. Идентификаторы (описание переменных)

Идентификаторы и переменные описаны в таблице №1

Таблица №1 — Идентификаторы (описание переменных)

Имя

Область видимости

Тип

Описание и назначение

1.

n

main()

int

количество элементов в массиве

2.

A

main()

float*[]

исходный вещественного массива A

3.

tmpA

smooth ()

float*[]

временная переменная массива, для решения задачи сглаживания

  1. Исходный код программы

Следующий шаг - написание кода, позволяющий решить поставленную задачу. Исходный код программы, был представлен в листинге №1.

Листинг №1 - Исходный код программы

#include <iostream>

using namespace std;

//Функция ввода массива

void GetArray(float *&A, int n)

{

for (int i = 0; i < n; i++)

{

cout << "A["<<i+1<<"] = ";

cin >> A[i];

}

cout << endl;

}

//Функция вывода массива

void WriteArray(float *&A, int n)

{

for (int i = 0; i < n; i++)

{

cout << A[i] << "\t";

}

cout << endl;

}

//Функция сглаживания массива

void smooth(float *&A , int n)

{

// привычка, проверять входные данные на корректность

if (n < 2) return;

// временный массив, в который собираем сглаженные результаты

float *tmpA = new float[n];

// сглаживаем первый элемент

tmpA[0] = (A[0] + A[1]) / 2;

// сглаживаем всё, кроме первого и последнего элемента

for (int i = 1; i < n - 1; i++)

{

tmpA[i] = (A[i - 1] + A[i] + A[i + 1]) / 3;

}

// сглаживаем последний элемент

tmpA[n - 1] = (A[n - 2] + A[n - 1]) / 2;

// меняем ссылку оригинального массива на сглаженный

for (int i = 0; i < n; i++)

{

A[i] = tmpA[i];

}

delete [] tmpA;

}

int main()

{

setlocale(LC_ALL, "Russian");

cout << "Введите количество элементов массива = ";

int n;

cin >> n;

float *A = new float[n];

GetArray(A, n);

cout << "Изначальный массив"<< endl;

WriteArray(A, n);

cout << endl;

for (int i = 0; i < 5; i++)

{

smooth(A,n);

cout << "Cглаживаиние №" << i + 1 << endl;

WriteArray(A,n);

cout << endl;

}

cin >> n;

delete[] A;

return 0;

}

  1. Результат работы

Пользователь вводит количество элементов массива значение переменной n, и значения каждого элемента A[i], после ввода пользователя ему выдается информация о пятикратном сглаживание данного массива A, данный функционал представлен на рисунке 2.

Рисунок 4 ­— Результат работы программы (вывод информация о пятикратном сглаживание данного массива A)

  1. Заключение

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