Перестановка строк и столбцов
Пусть надо переставить две строки с индексами i1и i2. Это значит, что для каждого
столбца jнадо поменять местами элементы A[i1][j]и A[i2][j]через временную переменную (она называется temp).
for ( j = 0; j < N; j ++ ) {
temp = A[i1][j];
A[i1][j] = A[i2][j];
A[i2][j] = temp;
}
Преобразование в одномерный массив
Иногда надо скопировать матрицу Aразмером Mна Nв одномерный массив Bразмером
M*N. Очевидно, что при копировании по строкам (сначала первая строка, затем вторая и т.д.)элемент первой строки A[0][j]надо скопировать в B[j], элементы второй строки A[1][j] в B[N+j]и т.д. Отсюда следует, что для любой строки i элемент A[i][j]копируется в B[i*N+j].теперь осталось только в двойном цикле перебрать все элементы матрицы.
for ( i = 0; i < M; i ++ )
for ( j = 0; j < N; j ++ )
B[i*N+j] = A[i][j];
Заметим, что если надо провести какую-то операцию со всеми или некоторыми (стоящими
подряд) элементами матрицы и для одномерного массива уже есть соответствующая процедура, ее можно использовать, учитывая, что имя строки массива (например, A[0]) является указателем на начальный элемент этой строки. При этом надо учитывать, что в памяти элементы матрицы расположены по строкам. Например, функция вычисления суммы элементов (см. массивы) может применяться для матрицы так:
s0 = Sum(A[0], N); // суммастроки 0
s14 = Sum(A[1], 4*N); // суммастрок 1-4
sAll = Sum(A[0], M*N); // сумма всех строк
Дата добавления: 2015-10-05; просмотров: 705;