Top.Mail.Ru
Ответы

Помогите с решением пожалуйста

Дана прямоугольная матрица размерности MxN. Переписать элементы каждого столбца матрицы в обратном порядке на том же месте (перевернуть каждый столбец матрицы "A" без использования дополнительного массива).

По дате
По рейтингу
Аватар пользователя
Оракул

Достаточно обратить итератор. "Строки" и "столбцы", это очень вульгарно: есть первый индекс, второй и т.д.

123456789101112131415
 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) 
Аватар пользователя
Ученик

Код работает для строк, нужно перевернуть столбцы. И первоначально матрица выводится в строку.

Аватар пользователя
Мудрец
1234567891011121314151617181920
 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.



Видео по теме