[100баллов]:PASCAL: Создать файл F целого типа. Вычислить сумму четных компонент файла. Увеличить на значение суммы отрицательные компоненты второй половины файла, после этого из файла F удалить минимальную компоненту. Исходный и файл после замены распечатать.
// Увеличиваем на значение суммы отрицательные компоненты второй половины файла Reset(F); Seek(F, FileSize(F) div 2); while not EOF(F) do begin read(F, num); if num < 0 then begin num := num + sum; Seek(F, FilePos(F) - 1); write(F, num); end; end;
// Находим минимальную компоненту и удаляем Reset(F); min := MaxInt; count := 0; while not EOF(F) do begin read(F, num); if num < min then begin min := num; count := FilePos(F); end; end;
Reset(F); Seek(F, count-1); for i := count to FileSize(F) do begin Seek(F, i); read(F, num); Seek(F, i-1); write(F, num); end; Truncate(F);
// Выводим исходный и измененный файл Reset(F); writeln('Исходный файл F:'); while not EOF(F) do begin read(F, num); write(num, ' '); end;
program SumAndModify;
var
F: file of integer;
num, sum, min, count, i: integer;
begin
Assign(F, 'file.txt');
Rewrite(F);
// Вводим числа в файл
writeln('Введите числа (для окончания введите 0): ');
repeat
readln(num);
if num <> 0 then
write(F, num);
until num = 0;
Close(F);
// Вычисляем сумму четных компонент файла
sum := 0;
Reset(F);
while not EOF(F) do
begin
read(F, num);
if num mod 2 = 0 then
sum := sum + num;
end;
writeln('Сумма четных компонентов файла F: ', sum);
// Увеличиваем на значение суммы отрицательные компоненты второй половины файла
Reset(F);
Seek(F, FileSize(F) div 2);
while not EOF(F) do
begin
read(F, num);
if num < 0 then
begin
num := num + sum;
Seek(F, FilePos(F) - 1);
write(F, num);
end;
end;
// Находим минимальную компоненту и удаляем
Reset(F);
min := MaxInt;
count := 0;
while not EOF(F) do
begin
read(F, num);
if num < min then
begin
min := num;
count := FilePos(F);
end;
end;
Reset(F);
Seek(F, count-1);
for i := count to FileSize(F) do
begin
Seek(F, i);
read(F, num);
Seek(F, i-1);
write(F, num);
end;
Truncate(F);
// Выводим исходный и измененный файл
Reset(F);
writeln('Исходный файл F:');
while not EOF(F) do
begin
read(F, num);
write(num, ' ');
end;
Close(F);
end.