Данный файл целых чисел. Удалить из него все отрицательные числа - Pascal ABC
Формулировка задачи:
Данный файл целых чисел. Удалить из него все отрицательные числа.
Решение задачи: «Данный файл целых чисел. Удалить из него все отрицательные числа»
textual
Листинг программы
var f:file of integer; x,y,p,q:integer; begin // Создание файла assign(f, 'file'); rewrite(f); randomize; for p:=1 to 40 do begin x:=-20+random(41); write(f,x); end; // Выводим содержимое файла на экран writeLn('Содержание исходного файла'); reset(f); while not eof(f) do begin read(f,x); write(x:4); end; writeln; //удаляем отрицательные reset(f); p:=-1; //индексы всех элемента\в в файле q:=-1; //индексы не отрицательных while not EoF(f) do begin inc(p);//индекс числа read(f,x);//само число if x>=0 then //если не отрицательное begin inc(q);//индекс среди неотрицательных if q<>p then //если индексы не равны begin seek(f,q); //пишем число на место очередного неотрицательного write(f,x); seek(f,p+1);//продолжаем читать с того места где кончили +1 end; end; end; seek(f,q+1);//встаем за последним неотрицательным truncate(f);//обрезаем файл writeln('Содержание сжатого файла'); reset(f); while not eof(f) do begin read(f,x); write(x:4); end; close(f); end.
Объяснение кода листинга программы
- Объявлены переменные:
- f: файл целых чисел;
- x, y, p, q: целые числа;
- Создается файл с помощью функции assign и rewrite.
- Записываются 40 случайных целых чисел в файл с помощью цикла for и функции write.
- Выводится содержимое файла на экран с помощью функции writeLn и цикла while с условием not eof, а также функции read и write для чтения и вывода каждого числа.
- Начальные индексы неотрицательных чисел устанавливаются в -1 с помощью переменных p и q.
- В цикле while с условием not EoF (конец файла) происходит:
- Инкремент p для получения индекса следующего числа;
- Чтение числа с помощью функции read;
- Если число неотрицательное (x >= 0), то:
- Инкремент q для получения индекса следующего неотрицательного числа;
- Если q не равно p, то:
- Перемещение файла к месту следующего неотрицательного числа с помощью функции seek;
- Запись числа на это место с помощью функции write;
- Перемещение файла к следующему числу с помощью функции seek (p + 1);
- После окончания цикла, файл перемещается за последним неотрицательным числом с помощью функции seek;
- Файл обрезается с помощью функции truncate;
- Выводится сообщение о содержимом сжатого файла с помощью функции writeLn;
- Содержимое файла выводится на экран с помощью цикла while с условием not eof и функций read и write;
- Файл закрывается с помощью функции close.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д