Другие языки программирования и технологии

Всегда ли в матрице задаётся размерность?

Поскольку вопрос не по математике, а по программированию, отвечу: нет.
Память под матрицу в программе можно выделить двумя принципиально разными способами.
Для определенности напишу, как это выглядит на языке Си.
1-й способ - выделение памяти при компиляции программы. Мы тупо пишем "int A[10][20];" и таким образом резервируем память под двумерный массив целых чисел размерностью 10*20. Все вроде хорошо, но беда в том, что размерность массива должна быть известна ДО компиляции программы, а так бывает не всегда.
2-й способ - динамическое выделение памяти. Он требует большего количества операторов, но зато более гибок.
Для одномерного массива пишем: "int *A;", объявляя таким образом указатель. Далее, когда нам становится известна размерность (обозначим ее N), мы пишем:
"A=(int*)malloc(N);" или, на Си++ "A = new int [N];".
Конечно, мы должны проверить, выделилась ли память "if(A == NULL) {обработка ошибки; }"
Далее работаем с указателем A, как с обычным одномерным массивом, а в конце отдаем память системе: "free(A);", или на Си++ "delete A;".
Двумерный массив мы можем объявить как набор одномерных через двойной указатель: "int ** A;". Когда становится известна размерность, (обозначим M и N), пишем (сразу для Си++):
A = new int* [ M ];
for(int i = 0; i < M; i++)
A [ i ] = new int [ N ];
Теперь с указателем A мы можем работать как с обычным двумерным массивом.
В конце программы не забудем вернуть память:
for(int i =0; i < M; i++)
delete A [ i ];
delete A;
Не забываем проверять, выделилась ли память после каждого new.
В Паскале тоже есть функции, аналогичные malloc и free, только сейчас не помню, как они называются.
Андрей Анашкин
Андрей Анашкин
2 802
Лучший ответ
да, у квадратных и неквадратных матриц разные свойства.
МАТРИЦА - соразмерность бытия.

Похожие вопросы