Помогите с решением пожалуйста
Дана прямоугольная матрица размерности MxN. Переписать элементы каждого столбца матрицы в обратном порядке на том же месте (перевернуть каждый столбец матрицы "A" без использования дополнительного массива).
Достаточно обратить итератор. "Строки" и "столбцы", это очень вульгарно: есть первый индекс, второй и т.д.
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
#
matrix.reverse() # столбцы
for row in matrix:
print(row)
##
for i in range(len(matrix)): # строки
matrix[i].reverse()
#---
for row in matrix:
print(*row) Код работает для строк, нужно перевернуть столбцы. И первоначально матрица выводится в строку.
def reverse_columns(matrix):
M = len(matrix) # количество строк
N = len(matrix[0]) # количество столбцов
for col in range(N):
for row in range(M // 2):
# Меняем местами элементы с начала и конца столбца
matrix[row][col], matrix[M - row - 1][col] = matrix[M - row - 1][col], matrix[row][col]
# Пример использования
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
reverse_columns(matrix)
for row in matrix:
print(row) На паскале
uses crt;
type matr=array[1..100,1..100] of integer;
var i,j,n,c,m:integer;
a:matr;
BEGIN
randomize;
clrscr;
writeln('Zadacha na massiv ');
writeln('---------------------------');
writeln;
write('Vvesti N : ');
readln(n);
writeln('Massiv A: ');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=random(101);
write(a[i,j]:3);
end;
writeln; end;
writeln;
m:=trunc(n/2);
for i:=1 to n do
for j:=1 to m do begin
c:= a[j,i]; a[j,i]:=a[n-j+1,i]; a[n-j+1,i]:=c end;
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:3);
writeln; end;
end.