Обработка динамической матрицы

На рисунке изображена схема взаимосвязи (n + 1)-одномерных массивов, из n элементов каждый. Эти (n + 1) массивов совместно имитируют квадратную матрицу с изменяемыми размерами, формируемую в приведенной ниже программе.

float**matr;

Одномерный массив указателей(matr = new float*[n];)

0 1 2 n-1

*

   
*

 
*

 
. . . . . . . . . . . . . . . . . .
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;