1.1. Ввести имя набора данных.
1.2. Связать файл с набором данных.
2.1. Признак = "перестановки" (считаем, что перестановки будут).
2.2. Пока "перестановки" выполнить
2.2.1. Признак = " нет перестановок".
2.2.2. Номер записи (k) = 0.
2.2.3. Открыть файл для чтения.
2.2.4. Пока не конец файла выполнить
а) Установить в файле номер записи k;
б) Считать из файла Запись1 ( k-тую );
в) Если не конец файла, то
1)Считать из файла Запись2 ( k+1-вую );
2) Если Запись1.Цена > Запись2.Цена то
2,а) Установить в файле номер записи k;
2,б) Записать в файл Запись2 ( k+1-вую );
2,в) Записать в файл Запись1 ( k-тую );
2,г) Признак = "перестановка";
д) k = k + 1.
2.2.5. Закрыть файл
3. Закончить.
Программа для этого алгоритма будет иметь следующий вид.
Program Sort_File;
Type
Computer=Record
Marka : String[10];
Cena : Integer;
End;
Var
FilComp : File of Computer;
Comp1,Comp2 : Computer;
K : Integer;
Perest : Boolean; { Признак перестановок }
FilName : String; { Имя набора данных}
Begin
Writeln(’Введите имя набора данных’);
Readln(FilName);
Assign(Filan,FilName);
{ Упорядочение }
Perest := True;{ Перестановки будут }
While Perest do
Begin
Perest := False; {Перестановок еще не было}
K := 0;
Reset(FilComp); {Открытие файла}
While Not Eof(FilComp) do
Begin
Seek(FilComp,k);
Read(FilComp,Comp1);
If Not Eof(FilComp) then
Begin
Read(FilComp,Comp2);
If Comp1.Cena>Comp2.Cena then
Begin {Перестановка начинается}
Seek(FilComp,k);
Write(FilComp,Comp2);
Write(FilComp,Comp1);
Perest:=True; {Перестановка}
End;
End;
k:=k+1;
End;
Close(FilComp);
End;
Writeln(’Конец работы, нажмите клавишу Enter’);
Readln;
End.