Двемкрный массив
Добавлено: 23 сен 2009, 20:59
Здравствуйте помогите пожалуйста задали задачу(завтра сдавать).Условие Сортировать столбцы в матрице 6х6 по убыванию наименьших элементов в столбце.Вот что у мен яполучилось но видимо не правильно(((
Код: Выделить всё
program lab2;
uses crt;
const n=6; m=6;
type arr= array[1..n,1..m] of integer;
Var ft,fi: text;
i,j:integer;
A:Arr;
E:char;
f:string;
Procedure SWP(Var X,Y:Integer); {меняем местами X и Y}
Var T:Integer;
Begin
T:=X;
X:=Y;
Y:=T;
End;
Procedure SWPC(X,Y:Integer); {меняем местами строки с элементами X и Y}
Var T:Integer;
Begin
For T:=1 To M Do
SWP(A[X,T],A[Y,T]);
End;
Function MinC(X:Integer):Integer; {определение максимального элемента в строке}
Var Min,T:Integer;
Begin
Min:=A[X,1];
For T:=1 To M Do If A[X,T]>Min Then Min:=A[X,T];
MinC:=Min;
End;
Procedure Sort; {сотировка строк по убыванию максимального элемента}
Var X,Y:Integer;
Begin
For X:=1 To N-1 Do
For Y:=X+1 To N Do
If MinC(X)>MinC(Y) Then SWPC(X,Y);
End;
begin
clrscr;
writeln('Vi hotite zadat matrizu s klaviaturi? (Y/N):'); {спрашиваем, откуда брать исходные данные}
readln(E);
If UpCase(E)='Y' then {ввод матрицы с клавиатуры}
begin
for i:=1 to n do
for j:=1 to m do
begin
Write('Vvedite A[',i,',',j,']=');
Readln(A[i,j]);
end;
writeln;
end;
If UpCase(E)='N' then {загрузка матрицы из файла}
begin
writeln('Matriza budet zagruzena iz faila. Vvedite imja faila:');
readln (f);
assign(ft,'D:\massiv\input.txt');
reset(ft);
For I:=1 To N Do
For j:=1 To M Do
Read(Ft,A[I,J]);
end;
assign(fi, 'd:\massiv\input.txt'); {создаём файл для вывода результатов и открываем его для записи}
Rewrite(fi);
writeln('Ishodnaya matrica:'); {выводим исходную матрицу на экран и в файл}
writeln;
writeln(fi,'Ishodnaya matrica:');
writeln(fi);
for i:=1 to n do begin
for j:=1 to m do write(' ',a[i,j]);
writeln;
end;
for i:=1 to n do begin
for j:=1 to m do write(fi,' ',a[i,j]);
writeln(fi);
end;
writeln;
writeln(fi);
Sort; {сама сортировка!}
writeln('Otsortirovannaja matrica:'); {выводим отсортированную матрицу на экран и в файл}
writeln;
writeln(fi,'Otsortirovannaja matrica:');
writeln(fi);
for i:=1 to n do begin
for j:=1 to m do write(' ',a[i,j]);
writeln;
end;
for i:=1 to n do begin
for j:=1 to m do write(fi,' ',a[i,j]);
writeln(fi);
end;
Close(fi); {закрываем файл с записанными данными}
writeln;
writeln ('Rezultat sochranen v faile ''rez.txt". Dlja zawershenia nazmite "Enter"');
readln;
end.