Обмен значений главной и побочной диагоналей квадратной матрицы
Авторgospodaretsva.comПросмотров3.7к.Обновлено
В квадратной матрице 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.
#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
Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
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.
#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