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

2 курс ИТиП лаб 2

.docx
Скачиваний:
2
Добавлен:
16.10.2024
Размер:
638.23 Кб
Скачать

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

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

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

(МТУСИ)

Факультет "Радио и телевидение"

Кафедра "Электроники"

ОТЧЕТ

по дисциплине "Информационные технологии и программирование"

на тему:

"Производные типы: указатели, массивы, строки, структуры, объединения. Статическое и динамическое выделение памяти. Вариант 7."

Выполнил

Проверил

Кандидат технических наук, доцент ______________ Т. П. Косичкина

Москва 2023

Цель работы: Овладеть навыками работы с производными типами данных в языках C/С++, научиться динамически выделять память.

ВЫПОЛНЕНИЕ

Задание 1.

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

Рисунок 1 – код функции increment

Рисунок 2- пример main который будет выводить остальные функции, меняя только сноску на функцию

Рисунок 3 – результат работы Функции increment

Задание 2.

Функция, которая создаёт на стеке целое число, осуществляет ввод, выводит на экран адрес переменной и её значение. Далее вызывает функцию из задания 1, а затем повторно выводит адрес и значение переменной.

Рисунок 4 – код функции incrementStackVariable

Рисунок 5- результат работы функции incrementStackVariable

Задание 3.

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

Рисунок 6- код функции incrementHeapVariable

Рисунок 7 – пример вывода функции incrementHeapVariable

Задание 4.

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

Рисунок 8- код функции writeArray

Задание 5.

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

Рисунок 9 – код функции readArray

Задание 6.

Функция сортировки массива с использованием алгоритма сортировки типа Вставка, указанном в индивидуальном задании. Функция должна получать указатель на первый элемент массива и количество элементов в массиве.

Рисунок 10 – код функции Sort

Задание 7.

Функция, которая создаёт на стеке массив из 7 элементов , выводит на экран 7 и с помощью разработанных ранее функций (задания 4-6) осуществляет ввод данных, вывод массива на экран, сортировку и повторный вывод отсортированного массива на экран

Рисунок 11- пример кода функции sortStackArray

Рисунок 12- результат работы функции sortStackarray

Задание 8.

Функция, которая создаёт в динамической памяти из N элементов (число N вводится пользователем с клавиатуры), выводит n на экран и с помощью разработанных ранее функций (задания 4-6) осуществляет ввод данных, вывод массива на экран, сортировку и повторный вывод отсортированного массива на экран. Перед выходом из функции необходимо освободить выделенную ранее память.

Рисунок 13 - пример кода функции sortHeapArray

Рисунок 14 - результат работы функции ortHeapArray

Задание 9.

Функция main, демонстрирующую работу функций из заданий 2,3,7,8.

Рисунок 15 - код программы в которой можно выбрать несколько функций

Рисунок 16 - результат работы с функцией, в которой можно выбрать несколько функций

Задание 10. Написать функцию для заполнения квадратной матрицы размерностью nхn возрастающей последовательностью целых чисел по заданной схеме. Размерность матрицы задается константой и должна находиться в пределах 4 ≤ n ≤16. Написать также функции вывода матрицы на экран. Показать, что найдена обратная матрица, перемножив ее с исходной. Работу всех функций проиллюстрировать в программе.

Рисунок 17 – Приложение к заданию 10 для 7 варианта.

Для выполнения данного задания необходимо составить массив, объявленный в 4 строке программы.

Рисунок 18 – Листинг программы.

Данная программа заполняет двумерный массив arr числами от 0 до 49 по указанному маршруту в приложении к заданию 10 для 7 варианта, начиная с верхнего левого угла и заканчивая центром. Для этого используются циклы, в которых изменяются индексы массива в зависимости от текущей итерации. В программе используется функция printf для вывода элементов массива на экран.

Рисунок 19 – Результат работы программы.

ВЫВОД

Вывод: В данной лабораторной работе были освоены навыки работы с производными типами данных в языках С/С++, а также был освоен процесс динамического выделения памяти. Эти навыки могут быть полезными при разработке программ, которые требуют использования сложных структур данных или при работе с большим объемом информации. Овладение этими навыками может помочь улучшить качество и эффективность программирования.