PROGRAM SortNum;
{ Программа Лабораторной работы N 5
Вариант N 31.
А.Я.Умненькая, ст. гр. Я-007 }
VAR
M,N,Jmin,i,j,i1,ki : integer;
Amin,Pr : real;
A : array [1..7,1..7] of real;
B : array [1..7] of real;
Fin,Fout : text;
LABEL
Vvod_M, Vvod_N;
BEGIN
{ Открытие входного и выходного файлов }
assign(Fout,'UMNIK5.RES');
rewrite(Fout);
assign(Fin,'D:LAB1DATF.TXT');
reset(Fin);
{ Ввод количества строк массива }
Vvod_M:
writeln ('Введите число строк массива');
readln(M);
if (M < 2) or (M > 7) then
begin
writeln('Недопустимое значение!');
goto Vvod_M;
end;
{ Ввод количества столбцов массива }
Vvod_N:
writeln ('Введите число столбцов массива');
readln(N);
if (N < 2) or (N > 7) then
begin
writeln('Недопустимое значение!');
goto Vvod_N;
end;
{ заполнение массива числами из файла }
for i:=1 to M do
for j:=1 to N do
read(Fin,A[i,j]);
{ Закрытие входного файла }
close(Fin);
{ Распечатка исходного массива }
Writeln(Fout,' Исходный массив из ',M,'x',N,
' элементов');
for i:=1 to M do
begin
for j:=1 to N do
Write(Fout,A[i,j]:8:2); {печать текущей строки }
Writeln(Fout);
end;
Writeln(Fout);
{ Поиск столбца с минимальным элементом }
Amin := A[1,1];
Jmin := 1;
for i:=1 to M do
for j:=1 to N do
if A[i,j] < Amin then
begin
Amin := A[i,j];
Jmin := j;
end;
{ Определение признака незанятого места }
Pr := Amin - 1.0;
{ Очистка выходного массива }
for i:=1 to M do B[i] := Pr;
{ сортировка "Jmin-го" столбца в выходной файл пересчетом }
for i:= 1 to M do
begin
ki := 1;
for i1:=1 to M do
if A[i1,Jmin] < A[i,Jmin] then ki := ki+1;
{ сдвиг дальше, если элемент уже занят }
while B[ki] <> Pr do ki := ki+1;
B[ki] := A[i,Jmin];
end;
{ Печать номера столбца c минимальным элементом }
Writeln(Fout,'Результаты работы':30);
Writeln(Fout);
Writeln(Fout,' Минимальный элемент находится в ',
Jmin,' столбце');
{ Печать отсортированного массива }
Writeln(Fout,'Сортированный массив':30);
for i:=1 to M do
Write(Fout,B[i]:8:2);
Writeln(Fout);
{ Закрытие выходного файла }
close(Fout);
END.