Обработка динамической матрицы
На рисунке изображена схема взаимосвязи (n + 1)-одномерных массивов, из n элементов каждый. Эти (n + 1) массивов совместно имитируют квадратную матрицу с изменяемыми размерами, формируемую в приведенной ниже программе.
float**matr;
Одномерный массив указателей(matr = new float*[n];)
0 1 2 n-1
| ||||||||
| ||||||||
| ||||||||
. . . | . . . | . . . | . . . | . . . | . . . | |||
| . . . |
Указатели типа
float * n одномерных массивов (matr[i] = new float[n];)
Схема имитации двумерного динамического массива с помощью массива указателей и набора одномерных массивов
В следующей программе формируется, заполняется данными, затем печатается и уничтожается массив, представляющий прямоугольную диагональную единичную матрицу, порядок которой (размеры массива) вводится пользователем с клавиатуры:
#include <iostream>
using namespace std;
void main()
{
// Определяются размеры массива
int n; // Порядок матрицы
cout << " Vveditre poriadok matrizi: ";
cin >> n;
// Указатель для массива указателей
float **matr;
matr = new float *[n]; // Массив указателей float *
if (matr == 0)
{
cout << "He создан динамический массив!";
return; // Завершение программы
}
for (int i = 0; i < n; i++)
{
// Строка-массив значений типа float:
matr[i] = new float[n];
if (matr[i] == 0)
{
cout << "He создан динамический массив!";
return; // Завершение программы
}
for (int j = 0; j < n; j++) // Заполнение матрицы
// Формирование нулевых элементов:
if (i != j)
matr[i][j] = 0;