Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
(МТУСИ)
Кафедра: Математической кибернетики и информационных технологий
Отчёт по лабораторной работе №5
Дисциплина: «Языки программирования»
по теме:
«Функции»
Вариант №19
Выполнил: студент группы МБСТ0000
Иванов И.И.
_________________________
Проверил:
Ассистент, Соловьев Александр Сергеевич
_________________________
Москва, 2024
Цель работы
Выполнить индивидуальное задание по теме «функции». Используя функции и изучить такие понятия функции, декомпозиции программы при помощи функций, способам передачи параметров в функцию.
Индивидуальное задание
Описать функцию smooth(A, n), заменяющую каждый элемент вещественного массива A размера n на его среднее арифметическое со своими соседями («сглаживание массива»). Массив A — входной и выходной параметр, n — входной параметр. С помощью этой функции выполнить пятикратное сглаживание данного массива A размера n, выводя на экран результаты каждого сглаживания.
Блок-схемы алгоритмов
Для решения поставленной задачи необходимо построить блок-схему алгоритма работы, на которой будет отражен общий принцип функционирования программы. Программа разделена на функции первые две функции - это ввод и вывод элементов массива представлены на рисунке 1.
Рисунок 1 – Схема алгоритмов функций GetArray и WriteArray
Была разработана функция для сглаживания массива, для решения индивидуального задания представлена на рисунке 2.
Рисунок 2 – Схема алгоритма функции smooth
Основная функция main вызывающие другие функции, для решения индивидуального задания представлена на рисунке 2.
Рисунок 3 – Схема алгоритма функции main
Идентификаторы (описание переменных)
Идентификаторы и переменные описаны в таблице №1
Таблица №1 — Идентификаторы (описание переменных)
№ |
Имя |
Область видимости |
Тип |
Описание и назначение |
1. |
n |
main() |
int |
количество элементов в массиве |
2. |
A |
main() |
float*[] |
исходный вещественного массива A |
3. |
tmpA |
smooth () |
float*[] |
временная переменная массива, для решения задачи сглаживания |
Исходный код программы
Следующий шаг - написание кода, позволяющий решить поставленную задачу. Исходный код программы, был представлен в листинге №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;
}
Результат работы
Пользователь вводит количество элементов массива значение переменной n, и значения каждого элемента A[i], после ввода пользователя ему выдается информация о пятикратном сглаживание данного массива A, данный функционал представлен на рисунке 2.
Рисунок 4 — Результат работы программы (вывод информация о пятикратном сглаживание данного массива A)
Заключение
В ходе выполнения лабораторной работы было выполнено данное индивидуальное задание. Также в ходе лабораторной работы было изучены теоретические сведения о понятие функции, декомпозиции программы при помощи функций, способам передачи параметров в функцию.