Разбор задачи A6 (демо ЕГЭ 2009)
Дан фрагмент программы, обрабатывающей двухмерный массив A размера n×n.
Бейсик | Паскаль | Алгоритмический |
---|---|---|
k = 1 FOR i = 1 TO n c = A(i,i) A(i,i) = A(k,i) A(k,i) = c NEXT i |
k:=1; for i:=1 to n do begin c:=A[i,i]; A[i,i]:=A[k,i]; A[k,i]:=c end |
k:=1 нц для i от 1 до n c:=A[i,i] A[i,i]:=A[k,i] A[k,i]:=c кц |
Представим массив в виде квадратной таблицы, в которой для элемента массива A[i,j] величина i является номером строки, а величина j – номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами
- два столбца в таблице
- две строки в таблице
- элементы диагонали и k-ой строки таблицы
- элементы диагонали и k-го столбца таблицы
Во фрагменте программы описана работа цикла for. В нем меняются местами элементы массива c индексами: (i,i) и (k,i).
A[i,i]-это элемент диагонали, т.к. i=j (номер строки и столбца одинаковы). Диагональ матрицы-это элементы массива, где номер строки и номер столбца одинаковы. Рассмотрим для наглядности пример массива 4х4:
A11A12A13A14
A21A22A23A24
A31A32A33A34
A41A42A34A44
Розовым выделены элементы массива, которые являются элементами диагонали.
A[k,i]-это элемент k-ой строки, т.к. i=k (i-номер строки).
Получается, что алгоритм меняет местами элементы диагонали и k-ой строки таблицы.