
2 курс ИТиП лаб 2
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ
(МТУСИ)
Факультет "Радио и телевидение"
Кафедра "Электроники"
ОТЧЕТ
по дисциплине "Информационные технологии и программирование"
на тему:
"Производные типы: указатели, массивы, строки, структуры, объединения. Статическое и динамическое выделение памяти. Вариант 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 – Результат работы программы.
ВЫВОД
Вывод: В данной лабораторной работе были освоены навыки работы с производными типами данных в языках С/С++, а также был освоен процесс динамического выделения памяти. Эти навыки могут быть полезными при разработке программ, которые требуют использования сложных структур данных или при работе с большим объемом информации. Овладение этими навыками может помочь улучшить качество и эффективность программирования.