15. Включение строки в матрицу. Включаемая строка задана как вектор (С). Включение строки в матрицу аналогично включению элемента в одномерный массив (см. п. 12).
Программа 4.16
…
for ( i = N-1; i>=k; i--)
for ( j = 0; j<M; j++)
A[i+1][j]= A[i][j];
for ( j = 0; j<M; j++)
A[k][j]=C[j];
…
Пояснение к программе. Прежде всего, перемещают строки, начиная с К-й, вниз (в обратном порядке). Перемещение одной строки связано с пересылкой всех элементов этой строки, что требует организации цикла по номеру столбца. Далее включают строку С в качестве К-й.
Примечание. Включение столбца осуществляется аналогично.
16. Перестановка элементов в векторе.
Перестановка i-го и j-ro элементов осуществляется с использованием вспомогательной переменной (Р), в которую временно помещается один из элементов массива:
P=A[i]; A[i] = A[j] ; A[j]=P;
17. Перестановка строк матрицы.
С использованием вспомогательной переменной Р перестановка осуществляется во всех столбцах двух строк (см. программу 4.17).
Программа 4.17
…
// перестановка i-ой и j-ой строк матрицы
for ( k = 0; k<M; k++)
{P=A[i][k]; A[i] [k]= A[j][k] ; A[j][k]=P;}
…
18. Преобразования матрицы.
1) Умножение (деление) строки на число. Требуется умножить (разделить) все элементы строки (в программе — i-й) на одно и то же число (В), в частности, на какой-либо элемент этой же строки (см. программу 4.18).
Программа 4.18
…
for ( j = 0; j<M; j++)
A[i][j]= A[i] [j]*B;
…
Примечание. Умножение (деление) столбца на число осуществляется аналогично.
2) Сложение строк. Требуется к элементам К-й строки прибавить элементы L-й строки, умноженные на число (В) (см. программу 4.19).
Программа 4.19
…
// сложение k-ой и s-ой строк матрицы
for ( j = 0; j<M; j++)
A[k][j]= A[k] [j]+ A[s][j] ;
…
19. Поиск минимального (максимального) элемента в массиве.
Требуется найти минимальный элемент в массиве и его значение поместить в переменную Р, а индекс — в переменную К.
Для одномерного массива поиск минимального элемента осуществляется аналогично определению минимального элемента в потоке чисел, с той разницей, что в рассматриваемом случае все числа находятся в памяти (в программе — массив А), и, чтобы перейти к следующему элементу, достаточно изменить индекс на 1 (см. программу 4.20)
Программа 4.20
………
K=0;
for ( i = 1; i<N-1; i++)
if (a[K]>a[i]) K= i ;
………..
Если в массиве несколько элементов имеют минимальное значение, то в К будет запоминаться индекс первого из них. Если проверять условие a[K]>=a[i], то будет запоминаться индекс последнего элемента.
Для поиска максимального элемента нужно проверить условие a[K]<a[i].
Для двумерного массива алгоритм аналогичный, но нужно для каждой строки просматривать элементы всех столбцов (что требует организации двойного цикла) и запоминать два индекса: номер строки (К) и номер столбца (L)
20. Преобразование матрацы в одномерный массив.
Обработка одномерных массивов осуществляется быстрее, чем двумерных того же размера, что часто требует выполнения указанного преобразования.
Требуется переслать элементы матрицы размером N*M в одномерный массив того же размера по строкам с сохранением порядка следования элементов. Для этого нужно соответствующим образом согласовать индексы исходного массива А и формируемого X (см. программу 4.21).
Программа 4.21
…
int X[N*M]; // объявление нового одномерного массива
for ( i = 0; i<N; i++)
for ( j = 0; j<M; j++)
X[i*M + j]=A[i][j];
…
Задание I уровня. Это задание требует использования одного из приведенных во введении алгоритмов для конкретного размера массива, указанного в задаче.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.