Обмен значений главной и побочной диагоналей квадратной матрицы

В квадратной матрице 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

поменять местами главную и побочную диагональ 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

Оцените статью
Добавить комментарий