Лабораторная работа № 1. Программирование алгоритмов с использованием динамических массивов - Технология разработки программного обеспечения систем управления
Цель Работы - научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а также косвенное обращение к элементам массива.
- Теоретические сведения
Объявление Динамического Массива
Массивы, создаваемые в динамической памяти, будем называть Динамическими (размерность становится известна в процессе выполнения программы). При описании массива после имени в квадратных скобках задается количество его элементов (размерность), например, int a[10]. Размерность массива может быть задана только константой или константным выражением.
При описании массив можно инициализировать, т. е. присвоить его элементам начальные значения, например:
Int а[10] = {1, 1, 2, 2, 5, 100};
Если инициализирующих значений меньше, чем элементов в массиве, остаток массива обнуляется, если больше - лишние значения не используются. Элементы массивов нумеруются с нуля, поэтому максимальный номер элемента всегда на единицу меньше размерности. Номер элемента указывается после его имени в квадратных скобках: например, а[0], а[3].
Если до начала работы программы неизвестно, сколько в массиве элементов, то в программе следует использовать динамические массивы. Память под них выделяется с помощью операции new или функции malloc в динамической области памяти во время выполнения программы. Адрес начала массива хранится в переменной, называемой указателем. Например:
Int n = 10;
Int *mass1 = new int[n];
Во второй строке описан указатель на целую величину, которому присваивается адрес начала непрерывной области динамической памяти, выделенной с помощью операции new. Выделяется столько памяти, сколько необходимо для хранения n величин типа int. Величина n может быть переменной. Инициализировать динамический массив нельзя.
Обращение к элементу динамического массива осуществляется так же, как и к элементу обычного. Если динамический массив в какой-то момент работы программы перестает быть нужным, и мы собираемся впоследствии использовать эту память повторно, то необходимо освободить ее с помощью операции delete[], например: delete [] a; (размерность массива при этом не указывается).
Delete[] mass1.
При необходимости создания многомерных динамических массивов сначала следует с помощью операции new выделить память под n указателей (вектор, элемент которого - указатель), при этом все указатели располагаются в памяти последовательно друг за другом. После этого необходимо в цикле каждому указателю присвоить адрес выделенной области памяти размером, равным второй границе массива:
Mass2=new int*[row];
// mass2 - указатель на
// массив //указателей на
// одномерные массивы
For(i=0;i<row;i++)
Mass2[i]=new int[col];// каждый элемент массива
// указывает на //одномерный
For (i=0; i<row;i++)
For (j=0;j<col;j++)
Освобождение памяти от двухмерного динамического массива:
For(i=0;i<row;i++)
//удаление всех одномерных
Delete[] mass2[i]; // массивов
Delete[] mass2;
// удаление массива //указателей
// на одномерные массивы
- Задание к лабораторной работе
Общая постановка. Составить программы - одномерные массивы: задания 1 - 25, двухмерные массивы: задания 26 - 50. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива - через косвенную адресацию. Действия с массивами реализовать в виде функции.
- - Варианты заданий 1. Заданы два массива - А(5) и В(4). Первым на печать вывести массив, сумма значений которого окажется наименьшей. 2. Заданы два массива - А(5) и В(4). Первым на печать вывести массив, произведение значений которого окажется наименьшим. 3. Заданы два массива - А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы. 4. Заданы два массива - А(5) и В(5). В каждом из массивов найти наибольшее значение и вычесть его из всех элементов массивов. На печать вывести исходные и преобразованные массивы. 5. Заданы два массива - А(5) и В(5). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения. 6. Заданы два массива - А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер. 7. Заданы два массива - А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество. 8. Заданы два массива - А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наименьшее их количество. 9. Заданы два массива - А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наибольшее их количество. 10. Заданы два массива - А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наибольшее их количество. 11. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, больших значения t, и первым на печать вывести массив, имеющий наименьшее их количество. 12. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, меньших значения t, и первым на печать вывести массив, имеющий наименьшее их количество. 13. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, больших значения t, и первым на печать вывести массив, имеющий наибольшее их количество. 14. Заданы два массива - А(5) и В(5). В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы. 15. Заданы два массива - А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы. 16. Заданы два массива - А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы. 17. Заданы два массива - А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы. 18. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, кратных двум, и первым на печать вывести массив, имеющий наибольшее их количество. 19. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, кратных трем, и первым на печать вывести массив, имеющий наибольшее их количество. 20. Заданы два массива - А(5) и В(5). Подсчитать в них количество элементов, меньших значения t, и первым на печать вывести массив, имеющий наибольшее их количество. 21. Задан массив - А(10). Получить из него массив В, состоящий из элементов массива А, которые больше 0. 22. Задан массив - А(10). Получить из него массив В, состоящий из элементов массива А, которые меньше 0. 23. Задан массив - А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны двум. 24. Задан массив - А(10). Получить из него массив В, состоящий из элементов массива А, которые больше значения T. 25. Задан массив - А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны трем. 26. Дан массив - А(n, n). Найти число элементов массива a(i, j) > t и просуммировать все эти элементы. 27. Дан одномерный массив - А(n). Сформировать массив B(k),состоящий из a(i) > t. На печать вывести исходный массив, сформированный массив и его размерность. 28. Дан массив - A(n, n). Вычислить сумму всех неотрицательных элементов, а также их количество. 29. Дан массив - A(n, n). Вычислить сумму всех отрицательных его элементов и их количество. 30. Дан массив - A(n, n). Сформировать вектор В(k) из a(i, j) < 0. на печать вывести исходный массив, полученный вектор и его размерность. 31. дан массив - a(n, n). написать программу его поворота на 90° относительно его центра. на печать вывести исходный и повернутый массивы. 32. дан массив - a(n, n). написать программу его поворота на 180° относительно его центра. на печать вывести исходный и повернутый массивы. 33. дан массив - a(n, n). написать программу его поворота на 270° относительно его центра. на печать вывести исходный и повернутый массивы. 34. дан массив - a(n, n). найти сумму всех его элементов, расположенных выше главной диагонали. 35. дан массив - a(n, n). найти сумму всех его элементов, расположенных ниже главной диагонали. 36. дан массив - a(n, n). найти сумму всех его элементов, расположенных выше диагонали, противоположной главной. 37. дан массив - a(n, n). найти сумму всех его элементов, расположенных ниже диагонали, противоположной главной. 38. задана матрица - а(n, n). найти суммы и произведения элементов, стоящих на главной и противоположной (побочной) диагоналях. 39. задана матрица - а(n, n), состоящая из нулей и единиц. подсчитать количество нулей и единиц в этой матрице. 40. задана матрица - а(n, n). переставить местами k-ю и i-ю строки, а эатем l-й и j-й столбцы. 41. задан массив действительных чисел а(n). необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. на печать вывести исходный и преобразованный массивы. 42. задан массив - а(n). получить массив в(k), состоящий из элементов массива а, которые делятся на 3. подсчитать количество элементов массива в. 43. задана матрица а(n, n). получить матрицу в=а^2. элемент b[i][j] определяется как сумма от поэлементного произведения i-й строки на j-й столбец матрицы а. 44. вычислить первую норму матрицы а(n, n), определяемую как, т. е. максимальная сумма из сумм элементов по столбцам. 45. вычислить вторую норму матрицы а(n, n), определяемую как максимальная сумма из сумм элементов по строкам. 46. задан двухмерный массив целых чисел a размером n на m. найти сумму элементов, расположенных на главной диагонали. 47. задан двухмерный массив целых чисел a размером n на m. найти произведение элементов, расположенных на главной диагонали. 48. задан двухмерный массив целых чисел a размером n на m. найти максимальный элемент и поменять его с элементом a[1,1]. 49. задан двухмерный массив целых чисел a размером n на m. найти минимальный элемент и поменять его с элементом a[1,1]. 50. задан двухмерный массив целых чисел a размером n на m. найти максимальный элемент и поменять его с последним. - Контрольные вопросы 1. В чем заключается особенность динамических массивов? 2. Какие вы знаете операции динамического выделения и освобождения памяти в С++? 3. Как объявить динамический многомерный массив, используя указатели? 4. Что содержит указатель на массив?
Похожие статьи
-
Цель Работы - изучить одну из базовых концепций ООП, наследование классов в С++, заключающуюся в построении цепочек классов, связанных иерархически,...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Цель Работы - изучить принципы работы элементов управления Progress и Slider. Получить навыки по самостоятельному созданию модальных диалоговых окон. -...
-
Объект ориентированный класс программирование Цель Работы - изучить методику создания одномерных динамических символьных массивов при помощи...
-
Цель Работы - научиться использовать элемент управления ListBox а также основные методы класса СListBox. Использование возможности контроля правильности...
-
Цель Работы - использовать принципы архитектуры "Документ-Представление" для выборки и сохранения данных в файлах, а также взаимодействия элементов меню,...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
1. Изучение теоретических аспектов использования: MS Word, MS Excel, MS Access, Paint и Photoshop... (ППО) Часть 1 : Руководство по выполнению...
-
Выбор средств реализации информационной системы Названные в параграфе 1.4. настоящей работы задачи могут быть решены тремя типами средств автоматизации:...
-
Для того, чтобы использовать симметричные алгоритмы шифрования, необходимо безопасно обменяться ключами. Протокол Диффи - Хеллмана позволяет двум и более...
-
Особенностью архитектуры REST является отсутствия хранения состояния на сервере. Для того, чтобы не передавать пользовательские логин и пароль каждый...
-
Введение - Технология разработки программного обеспечения систем управления
С++ является языком объектно-ориентированного программирования (ООП). Объект - абстрактная сущность, наделенная характеристиками объектов реального мира....
-
Advanced Encryption System - алгоритм шифрования, разработанный в 1998 году, который пришел на замену алгоритму DES. Данный алгоритм базируется на шифре...
-
2.1 Описание структуры базы данных Реляционная схема базы данных для ЦЗН представлена следующими таблицами: "ПО" - содержит список единиц программного...
-
Использование парадигмы ООП. Разрабатываемая АИС является системой с открытым исходным кодом и значит должна являться масштабируемой сторонними...
-
Общее описание программного обеспечения, реализующего разработанный алгоритм Основной идеей дипломного проекта, является реализация алгоритма...
-
Если в результате поиска на схеме по данным из таблицы будет найдено несколько экземпляров оборудования (т. е. с одинаковой маркировкой или...
-
Модуль Редактор Рассмотрим макеты интерфейса основных функциональных элементов локального приложения, которые отражают расположение основных элементов...
-
В состав беспроводных информационно - измерительных систем (БИИС) входят устройства трех видов: интеллектуальные датчики (ИД) и их кластеры и центральный...
-
Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява (Java). Для каждого из...
-
Проведем оценку эргономичности пользовательского интерфейса, заполнив таблицу 7.1. В ячейки, отражающие степень выраженности показателя, следует внести...
-
В настоящее время систем видеонаблюдения на рынке продается очень много, и обычно бывает очень сложно принять правильное решение, выбрать нужное решение....
-
Модуль - Самостоятельно компилируемый файл ТР, который может содержать описание констант, переменных и типов, процедур и функций. Он имеет имя и хранится...
-
"РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MICROSOFT EXCEL" Цель работы Приобретение навыков решения задач линейного программирования...
-
Работа с контентом Контент системы содержит как отдельные медийные составляющие - текст, таблицы, ссылки, графику, так и связанные между собой....
-
Поскольку клиентская часть представляет собой приложение на базе операционной системы Android, то для ее разработки был выбран рекомендуемый...
-
Наименование системы Программная система управления контентом портала с архивом конструкторской документации. Цели, назначение и область использования...
-
В разработке системы принимал участие один инженер-программист. Длительность выполнения работ по проектированию и разработке системы представлена в...
-
Для перехода в административный раздел системы необходимо выбрать пункт меню "Файл" > "Администратор", после чего откроется окно, показанное на...
-
В этой главе представлено описание инструментов и методов, использованных при написании кода программы. Инструменты разработки серверной части Для...
-
Для того, чтобы вынести решение об оправданности или неоправданности внедрения автоматизированного тестирования вместо ручного, необходимо...
-
Программный интерфейс для базы данных я разрабатывал в объектно-ориентрованной среде Delphi, с помощью Embarcadero RAD Studio. Конструктор форм Delphi в...
-
Reset(имя файловой переменной); При этом указатель устанавливается на начало файла и вся информация сохраняется. Чтение из файла выполняется процедурой:...
-
Из-за того, что транспортная система создает основу для взаимосвязанной работы отдельных компьютеров, ее часто отождествляют с самим понятием...
-
CoDeSys -- универсальный инструмент разработки прикладных программ для программируемых логических контроллеров на языках стандарта IEC 61131-3. Данный...
-
Пользовательский интерфейс должен позволять заводить в базе данных информацию о новых охранниках, обслуживаемых объектах, автоматизировать составление...
-
Расчет коэффициента качества Рассчитаем весовые коэффициенты критериев сравнения (таблица 6.7) и интегрального коэффициента качества. Интегральный...
-
Описание API сервера - Программное обеспечение для пропускной системы на основе технологии NFC
Таблица 8 Описание API URL Метод Параметры Возвращает Вариант /login POST Phone - form-data JSON {'token', 'id'} - ID пользователя и токен Успех Password...
-
Для тестирования процесса расчета оценок будет специально создан учебный курс с двумя модулями, один из которых будет включать экзамен, а другой - нет. В...
-
Общие сведения о тестировании Данный раздел посвящен проведению тестирования клиентского приложения. Тестирование для серверной части системы не...
Лабораторная работа № 1. Программирование алгоритмов с использованием динамических массивов - Технология разработки программного обеспечения систем управления