Динамическое размещение данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Динамическое размещение данных



Если заранее неизвестно количество объектов, удобно использовать динамическое размещение данных, описав объект указателем.

В С++ введены операции: захват памяти - 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=А·А, А32·А и т.д.

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; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.55.14 (0.009 с.)