Ниже приведён фрагмент программы, записанный на четырёх языках программирования. Массив A двумерный; в программе рассматривается его фрагмент, соответствующий значениям индексов от 1 до n.
| Бейсик | Паскаль |
|---|---|
FOR i = 1 TO n c = A(i,i) A(i,i) = A(i,n–i+1) A(i,n–i+1) = c NEXT i | for i := 1 to n do begin c := A[i,i]; A[i,i] := A[i,n–i+1]; A[i,n–i+1] := c end; |
| Си++ | Алгоритмический язык |
for (i = 1; i <= n; i++) { c = A[i][i]; A[i][i] = A[i][n-i+1]; A[i][n-i+1] = c; } | нц для i от 1 до n c := A[i,i] A[i,i] := A[i,n–i+1] A[i,n–i+1] := c кц |
| Python | |
for i in range(1, n+1): c = A[i,i] A[i,i] = A[i,n–i+1] A[i,n–i+1] = c | |
Представим рассмотренный фрагмент массива в виде квадратной таблицы, в которой для элемента массива A[i, j] величина i является номером строки, а величина j — номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами
1) два столбца в таблице
2) две строки в таблице
3) элементы двух диагоналей таблицы
4) элементы диагонали и строки таблицы
Заметим, что элемент A[i,i] — диагональный, элемент A[i,n–i+1] — элемент второй диагонали таблицы. Таким образом, алгоритм меняет местами элементы двух диагоналей таблицы.
Правильный ответ указан под номером 3.

