Цвинтарный Иван 362-2 Лабораторная работа 5
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Томский Государственный Университет Систем Управления и Радиоэлектроники (ТУСУР)
Кафедра промышленной электроники (ПрЭ)
ОТЧЁТ
по результатам лабораторной работы №5
по дисциплине «Информатика»
Одномерные массивы
Выполнил
Студент гр. 362-2
________ Цвинтарный И.В.
«___» __________
Проверил
Преподаватель
_____________ Савин Д.А.
«___»__________
Томск 2022
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ 3
1. ХОД РАБОТЫ 4
2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ 5
3. БЛОК-СХЕМА ПОДПРОГРАММЫ 5
4. ПРОГРАММНЫЙ КОД – ТЕКСТ ПРОГРАММЫ 6
5. РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ 8
ЗАКЛЮЧЕНИЕ 9
ВВЕДЕНИЕ
В пятой лабораторной работе нам требуется научиться создавать массивы, выделять память под элементы массива и инициировать их значениями. Научиться обращаться к элементам массивов как при помощи оператора имя[индекс], так и посредством методики *(адрес + смещение). Освоить понятия: адрес массива, адрес элемента массива, смещение, индекс. Научиться передавать массив в функцию.
1. ХОД РАБОТЫ
1. Написать подпрограмму, выполняющую расчеты в соответствии со своим
вариантом индивидуального задания. Выполнение задания реализовать с
использованием массива соответствующего типа и размера.
2. Реализовать вызов функции из главной программы и вывод результатов
вычисления на экран. Отладить и протестировать программу.
3. Массив описать и инициировать в теле основной программы, передать его в функцию для расчетов. Вывести на экран адрес массива и его элементы.
4. Продемонстрировать в программе обращение к элементам массивов при помощи оператора имя[индекс], так и посредством методики *(адрес+смещение).
5. Отразить процесс трассировки кода, результаты работы программы, листинг программного кода с комментариями, блок-схему программы.
2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Вариант индивидуального задания – 23.
Рисунок 2.1 – Формулировка задания
3. БЛОК-СХЕМА ПОДПРОГРАММЫ
Рисунок 3.1 – Блок-схема подпрограммы
4. ПРОГРАММНЫЙ КОД – ТЕКСТ ПРОГРАММЫ
#include <iostream>
#include <time.h>
using namespace std;
#define rnd1(a, b) (rand()%((b) - (a) + 1) + (a))
void minmax(int* m, int n, int* min, int* imin, int* max, int* imax, int* mn, int* imn, int* mx, int* imx);
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "RUS");
int n;
cout << "Введите размер массива: ";
cin >> n;
int* m = new int[n];
for (int i = 0; i < n; i++)
{
m[i] = rnd1(-2, 2);
}
for (int i = 0; i < n; i++)
{
cout << "m[" << i << "] = " << m[i] << endl;
}
int min = 0;
int max = 0;
int imin = 0;
int imax = 0;
int mn = 0;
int mx = 0;
int imn = 0;
int imx = 0;
minmax(m, n, &min, &imin, &max, &imax, &mn, &mx, &imn, &imx);
cout << "Первый минимум: " << mn << ", индекс: " << imn << endl;
cout << "Последний минимум: " << min << ", индекс: " << imin << endl;
cout << "Первый максимум: " << mx << ", индекc: " << imx << endl;
cout << "Пследний максимум: " << max << ", индекс: " << imax << endl;
delete[] m;
}
void minmax(int* m, int n, int* min, int* imin, int* max, int* imax, int* mn, int* imn, int* mx, int* imx)
{
for (int i = 0; i < n; i++)
{
if (*min >= m[i])
{
*min = m[i];
*imin = i;
}
if (*max <= *(m + i))
{
*max = *(m + i);
*imax = i;
}
if (m[i] < *mn)
{
*mn = m[i];
*imn = i;
}
if (m[i] > *mx)
{
*mx = *(m + i);
*imx = i;
}
}
}
5. РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
Рисунок 5.1 – Результат работы программы
ЗАКЛЮЧЕНИЕ
В ходе лабораторной работы научились создавать массивы, выделять память под элементы массива и инициировать их значениями, обращаться к элементам массивов как при помощи оператора имя[индекс], так и посредством методики *(адрес + смещение). Научиться передавать массив в функцию. Составили блок-схему для демонстрации работы нашей подпрограммы. Вывели требуемые по заданию значения индексов максимального и минимального чисел массива.