Напечатать элементы файла 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.
- Указатель на предыдущий узел обновляется, чтобы указывать на новый узел.
- После завершения цикла чтения данных из файла закрывается файл.
- Запускается цикл удаления указателей на неиспользуемые узлы.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д