Дана матрица A[1..n,1..m] целых чисел. Напишите программу, которая переставит столбцы...

0 голосов
58 просмотров

Дана матрица A[1..n,1..m] целых чисел. Напишите программу, которая переставит столбцы матрицы А таким образом, чтобы элементы последней строки стали упорядоченными в убывающем порядке. Для упорядочивания использовать метод сортировки посредством выбора и не использовать дополнительную матрицу. Измененную матрицу вывести на экран.


Информатика (613 баллов) | 58 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//PascalABC.Net 3.2
var m, n: integer;
a: array of array of integer;

procedure zam(a1, b1: integer);
begin
for var i:=0 to n-1 do
begin
a[i][a1]+=a[i][b1];
a[i][b1] :=a[i][a1]-a[i][b1];
a[i][a1]-=a[i][b1];
end;
end;

procedure sortSelekt ();
var max: integer;
begin
for var i:=0 to m-1 do
begin
max:=i;
for var j:=i to m-1 do
if a[n-1][max]if i<>max then zam (i, max);
end;
end;

procedure printMAS ();
begin
for var i:=0 to n-1 do
begin
for var j:=0 to m-1 do write (a[i][j]:4);
writeln;
end;
end;

begin
n:=readinteger('n =');
m:=readinteger('m =');
setLength (a, n);
for var i:=0 to n-1 do
a[i]:=arrRandom (m, -99, 99);

writeln ('Первоначальная случайная матрица: ');
printMAS();
sortSelekt ();
writeln ('Измененная матрица: ');
printMAS();
end.

(3.8k баллов)
0

Полная дурость делать такую прогу на статических массивах, ну ОК

0

Сделаю, чтобы всё, что написано в коде, Вы обязательно проходили на уроках/лекциях))

0

//часть 1
var a: array [1..100, 1..100] of integer;
n, m : integer;

procedure zam(a1, b1: integer);
begin
for var i:=1 to n do
begin
a[i, a1]:=a[i, a1]+a[i, b1];
a[i, b1]:=a[i, a1]-a[i, b1];
a[i, a1]:=a[i, a1]-a[i, b1];
end;
end;

procedure sortSelect ();
var max: integer;
begin
for var i:=1 to m do
begin
max:=i;
for var j:=i to m do
if a[n,max]if i<>max then zam (i, max);
end;
end;

0

//часть 2
procedure printMAS ();
begin
for var i:=1 to n do
begin
for var j:=1 to m do write (a[i,j]:4);
writeln;
end;
end;

begin
write ('Введите n и m соответственно: ');
readln (n, m);
for var i:=1 to n do
for var j:=1 to m do
begin
print ('Введите A[', i, ',', j, ']:');
readln (a[i][j]);
end;

writeln ('Первоначальная матрица: ');
printMAS();
sortSelect ();
writeln ('Измененная матрица: ');
printMAS();
end.

0

А for var i:=1 to n do
for var j:=1 to m do, Как сделать чтобы var не было прямо там, а в начале

0

Так все норм, только вот это мы не учили

0

//часть 1
var a: array [1..100, 1..100] of integer;
n, m, i, j : integer;

procedure zam(a1, b1: integer);
var i1, j1: integer;
begin
for i1:=1 to n do
begin
a[i1, a1]:=a[i1, a1]+a[i1, b1];
a[i1, b1]:=a[i1, a1]-a[i1, b1];
a[i1, a1]:=a[i1, a1]-a[i1, b1];
end;
end;

procedure sortSelect ();
var max, i, j: integer;
begin
for i:=1 to m do
begin
max:=i;
for j:=i to m do
if a[n,max]if i<>max then zam (i, max);
end;
end;

0

//часть 2
procedure printMAS ();
var i, j: integer;
begin
for i:=1 to n do
begin
for j:=1 to m do write (a[i,j]:4);
writeln;
end;
end;

begin
write ('Введите n и m соответственно: ');
readln (n, m);
for i:=1 to n do
for j:=1 to m do
begin
print ('Введите A[', i, ',', j, ']:');
readln (a[i][j]);
end;

writeln ('Первоначальная матрица: ');
printMAS();
sortSelect ();
writeln ('Измененная матрица: ');
printMAS();
end.

0

The best)

0

Спасибо! Огромное!