Переписать в пустой файл g сначала все положительные числа, а потом все отрицательные - Pascal ABC
Формулировка задачи:
Здравствуйте, не могли бы кто нибудь помочь с двумя задачами. P.S. прошу прощения что нарушил правила и выложил две задачи в одной теме, но не хочу плодить темы, и рациональнее будет выложить в одной.
Задача 1:
type rad = file of integer;
Описать процедуру p(f,g) от двух файлов типа rаd, которая из файла f переписывает в пустой файл g сначала все положительные числа, а потом все отрицательные.
Указание: введите файл f (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл g.
Решение задачи: «Переписать в пустой файл g сначала все положительные числа, а потом все отрицательные»
textual
Листинг программы
uses crt; type rad=file of integer; procedure p(var f,g:rad); var a:integer; begin reset(f); while not eof(f) do begin read(f,a); if a>0 then write(g,a) end; reset(f); while not eof(f) do begin read(f,a); if a<0 then write(g,a) end; close(f); end; var f,g:rad; a:integer; begin assign(f,'fileF'); rewrite(f); writeln('Введите в файл целые положительные и отрицательные числа,'); writeln('окончание ввода 0'); repeat readln(a); if a<>0 then write(f,a); until a=0; if filesize(f)=0 then begin writeln('Файл пустой, введите в него целые числа кроме ноля'); close(f); exit; end; assign(g,'fileG'); rewrite(g); p(f,g); reset(g); writeln('Файл G:'); while not eof(g) do begin read(g,a); write(a,' '); end; close(g); end.
Объяснение кода листинга программы
- Создается тип данных
rad
, который представляет собой файл, содержащий целочисленные значения. - Создается процедура
p
, которая принимает два параметра:f
иg
типаrad
. Внутри процедуры считывается значение из файлаf
и записывается в файлg
. Если значение положительное, оно записывается вg
, если отрицательное - вg
. - Создается переменная
a
типаinteger
. - Открывается файл
f
для чтения иg
для записи. - Выводится сообщение для пользователя о том, как использовать программу.
- Запрашивается ввод от пользователя до тех пор, пока введенное значение не станет равным нулю.
- Если файл
f
пуст, выводится сообщение об ошибке и программа завершается. - Закрываются файлы
f
иg
. - Выводится содержимое файла
g
.