Напечатать элементы файла f в следующем порядке: сначала – все числа, меньшие a, затем – все числа из отрезка - Pascal ABC
Формулировка задачи:
Пмоогите пожалуйста написать программный код:
Используя очередь, решить следующую задачу. TYPE FR = FILE OF REAL; За один просмотр файла f типа FR и без использования дополнительных файлов напечатать элементы файла f в следующем порядке: сначала – все числа, меньшие a, затем – все числа из отрезка [a, b], и наконец– все остальные числа, сохраняя исходный взаимный порядок в каждой из этих групп чисел (a ,b – заданы, a<b).
Решение задачи: «Напечатать элементы файла f в следующем порядке: сначала – все числа, меньшие a, затем – все числа из отрезка»
textual
Листинг программы
type PNode = ^TNode; TNode = record next: PNode; r: Real; end; var f: file of Real; a, b, r: Real; ph, qh, p: PNode; pp, qq: ^PNode; begin Assign(f,'input.dat'); Reset(f); Write('a, b: '); ReadLn(a,b); pp:=@ph; qq:=@qh; while not EoF(f) do begin Read(f,r); if r<a then WriteLn(r) else if r<=b then begin New(pp^); pp^^.r:=r; pp^^.next:=nil; pp:=@pp^^.next; end else begin New(qq^); qq^^.r:=r; qq^^.next:=nil; qq:=@qq^^.next; end; end; Close(f); while ph<>nil do begin WriteLn(ph^.r); p:=ph; ph:=ph^.next; Dispose(p); end; while qh<>nil do begin WriteLn(qh^.r); p:=qh; qh:=qh^.next; Dispose(p); end; end.
Объяснение кода листинга программы
- Создается тип данных PNode, который представляет собой указатель на структуру TNode.
- Создается переменная f типа file of Real, которая представляет собой файл для чтения и записи чисел с плавающей точкой.
- Создаются две переменные a и b типа Real, которые будут использоваться для чтения значений из файла.
- Создаются три указателя ph, qh и p типа PNode, которые будут использоваться для чтения и записи данных в файл.
- Создаются две переменные pp и qq типа ^PNode, которые будут использоваться для чтения и записи данных в файл.
- Задается значение переменной a и b с помощью функции ReadLn.
- Запускается цикл чтения данных из файла до конца файла (до тех пор, пока не будет достигнут конец файла EoF).
- Внутри цикла происходит следующее:
- Чтение значения r из файла.
- Если значение r меньше значения переменной a, то оно записывается в файл.
- Если значение r находится в диапазоне от a до b, то оно записывается в файл.
- Если значение r больше или равно значению переменной b, то оно не записывается в файл.
- Если значение r не попадает в указанный диапазон, то создается новый узел и записывается в него значение r.
- Указатель на предыдущий узел обновляется, чтобы указывать на новый узел.
- После завершения цикла чтения данных из файла закрывается файл.
- Запускается цикл удаления указателей на неиспользуемые узлы.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д