Оглавление:
Задача — Обмен значений главной и побочной диагоналей квадратной матрицы
— программирование на Pascal, Си, Кумир, Basic-256, Python
В квадратной матрице 10×10 обменять значения элементов в каждой строке, расположенные на главной и побочной диагоналях.
Диагонали можно выделить лишь в квадратной матрице (когда количество строк равно количеству столбцов). Главная диагональ идет из верхнего левого угла в правый нижний, а побочная — из правого верхнего в левый нижний. Таким образом элементы главной диагонали имеют равные индексы строки и столбца, а у побочной — противоположные.
Поскольку обмен происходит в одной строке, то значения подлежащие обмену имеют следующие индексы:
- у элемента главной диагонали — первый и второй индексы равны друг другу (i = j),
- у элемента побочной диагонали — первый индекс равен i, а второй N-j+1 (при индексации с единицы) или N-1-j (при индексации с нуля).
При проходе по матрице обмен значений происходит лишь в том случае, когда i = j.
Pascal
const
N = 10;
var
arr: array[1..N,1..N] of byte;
i,j,a: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to N do begin
arr[i,j] := random(100);
write(arr[i,j]:4);
end;
writeln;
end;
writeln;
for i:=1 to N do
for j:=1 to N do
if i = j then begin
a := arr[i,j];
arr[i,j] := arr[i,N-j+1];
arr[i,N-j+1] := a;
end;
for i:=1 to N do begin
for j:=1 to N do
write(arr[i,j]:4);
writeln;
end;
end.
Пример(ы) выполнения программы на языке Pascal:
79 9 84 8 78 80 57 26 0 8 54 20 58 31 85 85 9 99 94 18 32 42 56 43 64 41 76 38 68 2 98 15 27 11 28 52 9 76 19 79 51 18 44 89 97 18 22 64 12 4 3 58 43 70 95 68 79 82 33 32 33 91 66 32 43 6 43 97 62 6 57 11 78 58 24 8 79 30 71 77 81 16 99 59 55 95 51 12 3 20 93 90 55 57 7 83 99 66 94 51 8 9 84 8 78 80 57 26 0 79 54 94 58 31 85 85 9 99 20 18 32 42 38 43 64 41 76 56 68 2 98 15 27 9 28 52 11 76 19 79 51 18 44 89 18 97 22 64 12 4 3 58 43 70 68 95 79 82 33 32 33 91 66 43 43 6 32 97 62 6 57 11 30 58 24 8 79 78 71 77 81 3 99 59 55 95 51 12 16 20 51 90 55 57 7 83 99 66 94 93
Язык Си
#include <stdio.h>
#define N 10
main() {
int a[N][N], i, j, b;
srand(time(NULL));
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
a[i][j] = rand()%100;
printf(«%4d», a[i][j]);
}
printf(«n»);
}
printf(«n»);
for (i=0; i<N; i++)
for (j=0; j<N; j++)
if (i == j) {
b = a[i][j];
a[i][j] = a[i][N-1-j];
a[i][N-1-j] = b;
}
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
printf(«%4d», a[i][j]);
}
printf(«n»);
}
}
Python
from random import random
N = 10
a = []
for i in range(N):
z = []
for j in range(N):
n = int(random() * 100)
z.append(n)
print(«%4d» % n, end=»)
print()
a.append(z)
print()
for i in range(N):
for j in range(N):
if i==j:
b = a[i][j]
a[i][j] = a[i][N-1-j]
a[i][N-1-j] = b
for i in range(N):
for j in range(N):
print(«%4d» % a[i][j], end=»)
print()
КуМир
алг обмен диагоналей
нач
цел N=10
цел таб a[1:N,1:N]
цел i, j, b
нц для i от 1 до N
нц для j от 1 до N
a[i,j] := int(rand(10,100))
вывод a[i,j], » »
кц
вывод нс
кц
вывод нс
нц для i от 1 до N
нц для j от 1 до N
если i = j то
b := a[i,j]
a[i,j] := a[i,N-j+1]
a[i,N-j+1] := b
все
кц
кц
нц для i от 1 до N
нц для j от 1 до N
вывод a[i,j], » »
кц
вывод нс
кц
кон
Basic-256
N = 10
dim a(N,N)
for i=0 to N-1
for j=0 to N-1
a[i,j] = int(rand*90)+10
print a[i,j]+» «;
next j
print
next i
print
for i=0 to N-1
for j=0 to N-1
if i=j then
b = a[i,j]
a[i,j] = a[i,N-1-j]
a[i,N-1-j] = b
endif
next j
next i
for i=0 to N-1
for j=0 to N-1
print a[i,j]+» «;
next j
print
next i