Сумма последних 4 компонент файла - Pascal ABC
Формулировка задачи:
Очень прошу, помогите. Вроде все правильно, но я не пойму как сделать так, чтобы считалась сумма последних 4 компонент.
Записать на диск файл вещ чисел. Если сумма последних 4 компонент файла превышает некоторое x (вводится с клавиатуры), то записать х на место последней компоненты, иначе записать х на место первой компоненты. Файл распечатать.
Решение задачи: «Сумма последних 4 компонент файла»
textual
Листинг программы
var f:file of integer;
s,x,a,n,i:integer;
begin
assign(f,'f.dat');
rewrite(f);
writeln('Введите в файл не менее четырех чисел, окончаеие ввода 100');
repeat
write('a<>100 a=');
readln(a);
until a<>100;
write(f,a);
while a<>100 do
begin
write('a=');
readln(a);
if a<>100 then write(f,a);
end;
writeln('Содержание исходного файла');
reset(f);
n:=filesize(f);
while not eof(f) do
begin
read(f,a);
write(' ',a);
end;
writeln;
if n<4 then
begin
writeln('В файле нет четырех чисел');
close(f);
exit;
end;
reset(f);
s:=0;
for i:=n-4 to n-1 do
begin
seek(f,i);
read(f,a);
s:=s+a;
end;
writeln('Сумма последних 4=',s);
writeln('Введите число x=');
readln(x);
if x<s then
begin
seek(f,n-1);
write(f,x);
end
else
begin
seek (f,0);
write(f,x);
end;
writeln('Результат:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(' ',a)
end;
close(f);
end.
Объяснение кода листинга программы
- Создание переменной
fтипаfile of integerдля работы с файлом. - Вывод сообщения о том, что необходимо ввести не менее четырех чисел, окончание ввода 100.
- Цикл
repeat, который будет выполняться до тех пор, пока введенное число не станет равным 100. - Чтение числа из файла и вывод его на экран.
- Если число не равно 100, то записывается в файл.
- Вывод сообщения о том, что в файле нет четырех чисел.
- Чтение размера файла
n. - Цикл
while not eof(f)выполняется, пока не будет достигнут конец файла. - Чтение числа из файла и вывод его на экран.
- Если число не равно 100, то записывается в файл.
- Счетчик
sинициализируется нулем. - Цикл
for i:=n-4 to n-1 doвыполняется четыре раза, начиная с индекса файлаn-4и заканчивая индексомn-1. - Для каждого значения
iвыполняется поиск в файлеfна текущем индексеi, чтение числа из файла и добавление его к суммеs. - Вывод суммы последних четырех чисел.
- Чтение числа
xс клавиатуры. - Проверка условия
if x<sи, в зависимости от результата, запись числаxв файл или вывод сообщения о том, что результат не удовлетворяет условию. - Цикл
while not eof(f)выполняется, пока не будет достигнут конец файла. - Чтение числа из файла и вывод его на экран.
- Закрытие файла.
- Выход из программы.