Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Динамическое размещение данныхСодержание книги
Поиск на нашем сайте
Если заранее неизвестно количество объектов, удобно использовать динамическое размещение данных, описав объект указателем. В С++ введены операции: захват памяти - new, освобождение, захваченной ранее памяти - delete. Операции new и delete для массивов: указатель = new тип [ количество ]; Результат операции – адрес начала области памяти для размещения данных, указанного количества и типа, при нехватке памяти – результат NULL. Операция освобождения памяти: delete [ ] указатель; Пример создания одномерного динамического массива: ... double *x; int i, n; ... puts(" Введите размер массива: "); scanf(“%d”, &n); x = new double [n]; if (x == NULL) { puts(" Предел размерности! "); return; } for (i=0; i<n; i++) // Ввод элементов массива scanf(“%lf”, &x[i]); ... delete [ ]x; // Освобождение памяти ...
Пример создания двуxмерного динамического массива: ... double **x; int n, m, i, j; puts(" Введите размеры n, m: "); scanf(“%d%d”, &n, &m); x = new double* [n]; // Захват памяти для указателей for (i=0; i<n; i++) // Захват памяти для элементов x[i] = new double [m]; ... for (i=0; i<n; i++) for (j=0; j<m; j++) x[i] [j] = i+j; // *(*(x+i)+j) = i+j; ... for (i=0; i<n; i++) // Освобождение памяти delete [ ] x[i]; delete [ ] x; ...
Варианты заданий Во всех заданиях предусмотреть динамический захват памяти, решение оформить в виде отдельной функции. На печать в виде таблиц вывести исходную и преобразованную матрицы (двухмерные динамические массивы). Исходная матрица формируется с клавиатуры 1. В вещественной матрице размером NxN найти максимальный и минимальный элементы. Переставить строки, в которых они находятся. Если они находятся в одной строке, выдать об этом сообщение. 2. Квадратную вещественную матрицу А размером N возвести в K-ю степень, т.е. вычислить: А1=А, А2=А·А, А3=А2·А и т.д. 3. Дана вещественная матрица размером NxM. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу. 4. Дана вещественная матрица размером NxM. Упорядочить ее строки по возрастанию наибольших элементов в строках матрицы. 5. Задан массив размером NxN, состоящий из 0 и 1. Повернуть элементы массива на 900 по часовой стрелке. 6. Элемент матрицы назовем седловой точкой, если он наименьший в своей строке и наибольший (одновременно) в своем столбце (или наоборот, наибольший в своей строке и наименьший в своем столбце). Для заданной целочисленной матрицы размером NxM напечатать индексы всех ее седловых точек. 7. Дана вещественная матрица размером N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом. 8. Определить, является ли заданная целочисленная квадратная матрица размером N ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1. 9. Определить, является ли заданная матрица N-го порядка магическим квадратом, т.е. такой, в которой сумма элементов во всех строках и столбцах одинакова. 10. Дана целочисленная матрица размером N. Найти сумму наименьших элементов ее нечетных строк и наибольших элементов ее четных строк. 11. Дана действительная квадратная матрица порядка N. Рассмотрим те элементы, которые расположены в строках, начинающихся с отрицательного элемента. Найти сумму тех из них, которые расположены соответственно ниже, выше и на главной диагонали матрицы. 12. Дана вещественная квадратная матрица порядка N. Получить целочисленную квадратную матрицу, в которой элемент равен 1, если соответствующий ему элемент исходной матрицы больше элемента, расположенного на главной диагонали. и равен 0 в противном случае. 13. Дана квадратная целочисленная матрица порядка N. Упорядочить элементы в строках по возрастанию. 14. Дана действительная квадратная матрица порядка N. Найти сумму и произведение элементов, расположенных ниже главной диагонали. 15. Дана действительная квадратная матрица порядка N. Найти сумму и произведение элементов, расположенных выше главной диагонали. 16. Получить целочисленную квадратную матрицу порядка N, элементами которой являются числа 1, 2, 3, …, расположенные в ней по спирали.
Контрольные вопросы 1. Укажите способы декларирования двухмерных массивов. 2. Формы (способы) работы с элементами двухмерного массива. 3. Что такое указатель на указатель? 4. Как связан указатель с двухмерным массивом? 5. Как создаются динамические массивы? ЗАДАНИЕ 7. Строки и массивы указателей
Цель работы: изучить особенности работы со строковыми объектами как одномерными символьными массивами, научиться использовать массивы указателей.
|
||||
|
Последнее изменение этой страницы: 2020-11-28; просмотров: 163; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.147 (0.007 с.) |