- •1. Краткие теоретические сведения
- •1.1. Понятие указателя
- •1.2. Объявление указателя
- •1.3. Операции над указателями
- •1.4. Передача параметра по ссылке
- •1.5. Динамическое выделение памяти
- •1.5.1. Динамическое размещение одномерного массива
- •1.5.2. Динамическое размещение двухмерного массива
- •1.5.3. Динамические массивы
- •1.5.4. Формирование динамических массивов с использованием библиотечных функций
- •1.5.5. Формирование динамических массивов с использованием операций new и delete
- •1.5.6. Динамические массивы
- •1.5.7. Динамические массивы
- •1.5.8. Динамические массивы
- •1.5.9. Освобождение выделенной динамической памяти.
- •1.5.10. Описание динамической строки
- •1.5.11. Объявление динамического массива
- •1.6. Связь указателей и массивов
- •1.7. Массивы указателей
- •1.8. Массивы и функции
- •1.9. Указатель на символьную строку
- •Второй пример
- •Увеличение указателя на символьную строку
- •Уменьшение количества операторов
- •Сканирование символьной строки
- •1.10. Заполнение массивов случайными числами
- •1.12. Примеры программирования задач
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Динамические одномерные массивы
- •2.4.1.1. Варианты заданий
- •2.4.1.2. Пример обработки динамического массива для варианта 30
- •2.4.1.3. Программа
- •Int *a, *b; // указатели исходных одномерных массивов a и b
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Динамические двумерных массивы
- •2.4.2.1. Варианты заданий
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Динамические одномерные массивы Викентьева
- •2.4.3.1. Варианты заданий
- •2.4.4.1. Варианты заданий
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие указателя 2
2.4.4.1. Варианты заданий
Таблица 15.4
№ |
Задание |
1 |
Добавить строку с заданным номером |
2 |
Добавить столбец с заданным номером |
3 |
Добавить строку в конец матрицы |
4 |
Добавить столбец в конец матрицы |
5 |
Добавить строку в начало матрицы |
6 |
Добавить столбец в начало матрицы |
7 |
Добавить К строк в конец матрицы |
8 |
Добавить К столбцов в конец матрицы |
9 |
Добавить К строк в начало матрицы |
10 |
Добавить К столбцов в начало матрицы |
11 |
Удалить строку с номером К |
12 |
Удалить столбец с номером К |
13 |
Удалить строки, начиная со строки К1 и до строки К2 |
14 |
Удалить столбцы, начиная со столбца К1 и до столбца К2 |
15 |
Удалить все четные строки |
16 |
Удалить все четные столбцы |
17 |
Удалить все строки, в которых есть хотя бы один нулевой элемент |
18 |
Удалить все столбцы, в которых есть хотя бы один нулевой элемент |
19 |
Удалить строку, в которой находится наибольший элемент матрицы |
20 |
Добавить строки после каждой четной строки матрицы |
21 |
Добавить столбцы после каждого четного столбца матрицы |
22 |
Добавить К строк, начиная со строки с номером N |
23 |
Добавить К столбцов, начиная со столбца с номером N |
24 |
Добавить строку после строки, содержащей наибольший элемент |
25 |
Добавить столбец после столбца, содержащего наибольший элемент |
26 |
Удалить К первых строк. |
27 |
Удалить К последних строк. |
28 |
Удалить одинаковые строки. |
29 |
Удалить строку и столбец, на пересечении которых находится минимальный элемент. |
30 |
Удалить строку и столбец, на пересечении которых находится максимальный элемент. |
2.4.4.2. Пример для варианта 30
Удалить строку и столбец, на пересечении которых находится максимальный элемент.
2.4.4.3. Программа
2.4.4.4. Тестирование
2.4.5. Задание 5. Динамические двумерные массивы
Общая постановка. Составить программы на двухмерные массивы: задания 26-50. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию.
2.4.5.1. Варианты заданий
Таблица 15.5
№ |
Задание |
1 |
31. Дан массив A(n,n). Написать программу его поворота на 900 относительно его центра. На печать вывести исходный и повернутый массивы. |
2 |
32. Дан массив A(n,n). Написать программу его поворота на 1800 относительно его центра. На печать вывести исходный и повернутый массивы. |
3 |
33. Дан массив A(n,n). Написать программу его поворота на 2700 относительно его центра. На печать вывести исходный и повернутый массивы. |
4 |
34. Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше главной диагонали. |
5 |
35. Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже главной диагонали. |
6 |
36. Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше диагонали, противоположной главной. |
7 |
37. Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже диагонали, противоположной главной. |
8 |
38. Задана матрица А(n,n). Найти суммы и произведения элементов, стоящих на главной и противоположной (побочной) диагоналях. |
9 |
39. Задана матрица А(n,n), состоящая из нулей и единиц. Подсчитать количество нулей и единиц в этой матрице. |
10 |
40. Задана матрица А(n,n). Переставить местами к-ю и i-ю строки, а эатем l-й и j-й столбцы. |
11 |
41. Задан массив действительных чисел А(n). Необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. На печать вывести исх. и преобразов. массивы. |
12 |
42. Задан массив А(n). Получить массив В(к), состоящий из элементов массива А, которые делятся на 3. Подсчитать количество элементов массива В. |
13 |
43. Задана матрица А(n,n). Получить матрицу В=А^2.Элемент b[I][j] определяется как сумма от поэлементного произведения I-й строки на j-й столбец матрицы А. |
14 |
44. Вычислить первую норму матрицы А(n,n) , определяемую как , т.е. максимальная сумма из сумм элементов по столбцам |
15 |
45. Вычислить вторую норму матрицы А(n,n), определяемую как максимальная сумма из сумм элементов по строкам . |
16 |
46. Задан двухмерный массив целых чисел A размером N на M. Найти сумму элементов, расположенных на главной диагонали. |
17 |
47. Задан двухмерный массив целых чисел A размером N на M. Найти произведение элементов, расположенных на главной диагонали. |
18 |
48. Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с элементом A[1,1]. |
19 |
49. Задан двухмерный массив целых чисел A размером N на M. Найти минимальный элемент и поменять его с элементом A[1,1]. |
20 |
50. Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с последним. |
21 |
26.Дан массив А(n,n).Найти число элементов массива a(i,j)>t и просуммировать все эти элементы. |
22 |
27.Дан одномерный массив А(n).Сформировать массив B(k),состоящий из a(i) > t. На печать вывести исходный массив, сформированный массив и его размерность. |
23 |
28.Дан массив A(n,n). Вычислить сумму всех неотрицательных элементов, а также их количество. |
24 |
29. Дан массив A(n,n). Вычислить сумму всех отрицательных его элементов и их количество. |
25 |
30. Дан массив A(n,n). Сформировать вектор В(к) из a(i,j) < 0. На печать вывести исходный массив, полученный вектор и его размерность. |
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
2.4.5.2. Пример для варианта 30
Удалить строку и столбец, на пересечении которых находится максимальный элемент.
2.4.5.3. Программа
2.4.5.4. Тестирование
3. ВЫВОДЫ
Выполнение этой лабораторной работы должно показать Вам средства языка C++, необходимые программисту для реализации программ, использующих указатели данных.
Выполнив данную лабораторную работу вы должны освоить следующие основные концепции:
1. Указатели содержат адрес памяти. Когда вы передаете в функцию массив, C++ передает адрес первого элемента массива.
2. Увеличивая значение указателя, вы можете адресовать с его помощью следующий элемент массива.
3. Функции, которые манипулируют строками с помощью указателей, обычно сканируют строку до того момента, пока не найден символ NULL.
4. При использовании указателей с массивами других типов ваши функции должны знать количество элементов массива или специальный маркер конца массива.
5. При использовании указателей с массивами других типов C++ автоматически (за кулисами) увеличивает указатель (адрес памяти) на требуемую величину таким образом, чтобы данный указатель указывал на следующий элемент массива.
Ваше умение понимать указатели и работать с ними облегчит использование объектно-ориентированных классов C++ в 3-ей части изучаемого курса.
Во время выполнения этой и других работ Вы познакомитесь с другими возможностями языка С++ и выберете для себя некоторый стиль написания программ на языке С++.
Чем активнее Вы будете овладевать возможностями системы программирования на языке С++, тем более легким и эффективным будет для Вас выполнение всего лабораторного практикума.