Файлы - Pascal ABC (12703)
Формулировка задачи:
Дан файл целых чисел.Удалить из него элементы с четным номером.
Решение задачи: «Файлы»
textual
Листинг программы
var f:file of integer;
n,i,j,k,a,b:integer;
begin
randomize;
assign(f,'file');
rewrite(f);
write('Сколько чисел записать в файл? n=');
readln(n);
for i:=1 to n do
begin
a:=random(50);
write(f,a);
end;
writeln('Содержание исходного файла:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a:4);
end;
writeln;
{будем удалять с четными номерами, это элементы с нечетными индексами}
reset(f);
i:=1; {начнем с номера 2, индекс=1}
seek(f,i);
while i<filesize(f) do{идем до конца файла}
begin
for j:=i to filesize(f)-2 do{от этого элемента до предпоследнего}
begin
seek(f,j+1);{читаем на 1 впереди}
read(f,a);
seek(f,j); {вставляем его на место предыдущего}
write(f,a);
end;
seek(f,filesize(f)-1);{встаем на последний элемент и обрезаем файл}
truncate(f);
i:=i+1;{следующий элемент будет с начальным четным номером}
end;
writeln('Удаление элементов с четными номерами');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a:4);
end;
close(f);
end.
Объяснение кода листинга программы
- Создание переменной
fтипаfile of integerдля работы с файлом целых чисел. - Задание начального значения переменной
nравным 10. - Вызов функции
randomizeдля инициализации генератора случайных чисел. - Вызов функции
assign(f,'file')для присвоения имени файлу. - Вызов функции
rewrite(f)для очистки содержимого файла. - Вызов функции
write('Сколько чисел записать в файл? n=')для получения от пользователя количества чисел, которые нужно записать в файл. - Цикл
for i:=1 to n doдля записи в файлnслучайных чисел от 0 до 50. - Внутри цикла присваивание переменной
aслучайного числа от 0 до 50. - Вызов функции
write(f,a)для записи числаaв файл. - Вызов функции
writeln('Содержание исходного файла:')для вывода содержимого файла до текущего момента. - Вызов функции
reset(f)для сброса файла перед чтением. - Вызов функции
while not eof(f)для чтения содержимого файла до конца. - Чтение числа
aиз файла с помощью функцииread(f,a). - Вызов функции
seek(f,i)для перемещения файла к нужному индексу. - Чтение числа
aиз файла с помощью функцииread(f,a). - Вызов функции
write(f,a)для записи числаaв файл. - Вызов функции
seek(f,i+1)для перемещения файла к следующему элементу. - Повторение шагов 13-16 до тех пор, пока не достигнут конец файла.
- Вызов функции
truncate(f)для обрезки файла после последнего элемента. - Увеличение значения переменной
iна 1 для перехода к следующему элементу с четным номером. - Вызов функции
writeln('Удаление элементов с четными номерами')для вывода информации о процессе удаления элементов с четными номерами. - Сброс файла перед чтением содержимого.
- Чтение числа
aиз файла с помощью функцииread(f,a). - Вызов функции
write(a:4)для записи числаaв файл в формате четырехзначного числа. - Закрытие файла с помощью функции
close(f).