
Сформировать матрицу 7х7 с помощью функции Random. Из неё получить две матрицы. Первая получится перестановкой строк в порядке возрастания средних арифметических элементов в каждой строке. Вторая получится перестановой столбцов в порядке возрастания средних арифметических элементов в каждом столбце. Результат получить в текстовом файле. Проблема в том, что вторая матрица получается перестановкой столбцов первой матрицы (с переставленными строками), а не исходной. Что нужно добавить или исправить в программе? Заранее благодарю.
program matrix;
uses crt;
const n=7;
name='C:\neo.out';
lin='*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*';
var fiogr:string[50];
neo:text;
sumstr,sumst:integer;
srsumstr,srsumst:real;
i,j:byte;
t,f:boolean;
v,u:real;
c,d:shortint;
a,b:array[1..n] of real;
matr:array[1..n,1..n] of shortint;
begin
clrscr;
assign(neo,name);
rewrite(neo);
writeln('Laboratornaya rabota 7');
writeln('Vvedite FIO, gruppu');
readln(fiogr);
writeln('Zadacha na dvujmerniy massiv');
writeln(neo,' Rezultat vichisleniy sojraneni v failie ', name);
writeln(neo,' Laboratornaya rabota 7');
writeln(neo,' Zadacha na dvujmerniy massiv');
writeln(neo,lin);
writeln(neo,fiogr);
writeln(neo,lin);
randomize;
writeln(neo,' Isjodnaya matritsa');
for i:=1 to n do
for j:=1 to n do
matr[i,j]:=random(99)-49;
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr[i,j]:3);
end;
writeln(neo);
end;
writeln(neo,lin);
writeln(neo,' Sriedniye arifmieticheskiye strok');
for i:=1 to n do begin
sumstr:=0;
for j:=1 to n do
sumstr:=sumstr+matr[i,j];
srsumstr:=sumstr/n;
a[i]:=srsumstr;
write(neo,' a[',i,']=',a[i]:6:2);
if i mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Orsortirovanniy massiv iz srednij arifmeticheskij');
writeln(neo,' eliemientov strok');
repeat
t:=true;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
for j:=1 to n do begin
c:=matr[i,j];
matr[i,j]:=matr[i+1,j];
matr[i+1,j]:=c;
end;
u:=a[i];
a[i]:=a[i+1];
a[i+1]:=u;
t:=false;
end;
until t;
for i:=1 to n do
begin
write(neo,' a[',i,']=',a[i]:6:2);
if i mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Otsortirovannaya matritsa po strokam');
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr[i,j]:3);
end;
writeln(neo);
end;
writeln(neo,lin);
writeln(neo,' Sriedniye arifmieticheskiye stolbtsov');
for j:=1 to n do begin
sumst:=0;
for i:=1 to n do
sumst:=sumst+matr[i,j];
srsumst:=sumst/n;
b[j]:=srsumst;
write(neo,' ','b[',j,']=',b[j]:6:2);
if j mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Orsortirovanniy massiv iz srednij arifmeticheskij');
writeln(neo,' eliemientov stolbtsov');
repeat
f:=true;
for j:=1 to n-1 do
if b[j]>b[j+1] then
begin
for i:=1 to n do begin
d:=matr[i,j];
matr[i,j]:=matr[i,j+1];
matr[i,j+1]:=d;
end;
v:=b[j];
b[j]:=b[j+1];
b[j+1]:=v;
f:=false;
end;
until f;
for j:=1 to n do
begin
write(neo,' ','b[',j,']=',b[j]:6:2);
if j mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Otsortirovannaya matritsa po stolbtsam');
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr[i,j]:3);
end;
writeln(neo);
end;
close(neo);
readln;
end.
Сообщение отредактировано: Mr. Anderson -