// PascalABC.NET 3.3.5, сборка 1636 от 10.03.2018
// Внимание! Если программа не работает, обновите версию!
begin
// создание файла
var f:file of integer;
var n:=20; // размер файла
Randomize;
Rewrite(f,'F.bin');
var b:integer;
loop n do begin
b:=Random(-50,50);
Write(f,b)
end;
f.Close;
// вывод содержимого исходного файла
Reset(f,'F.bin');
while not f.Eof do Print(f.Read);
Writeln;
// нахождение суммы четных компонент файла
// в связи с двусмысленностью условия считается, что
// понятие четности применяется к значению компоненты.
f.Reset;
var s:=f.ReadElements.Where(t->t.IsEven).Sum; // -48
// увеличение на значение суммы отрицательных компонент
// второй половины файла
f.Seek(f.FileSize div 2);
while not f.Eof do begin
b:=f.Read;
if b<0 then begin<br> b+=s;
f.Seek(f.FilePos-1);
Write(f,b)
end
end;
// удаляем минимальную компоненту
f.Reset;
var a:=f.ReadElements.ToArray;
var imin:=a.IndexMin;
a:=(a?[:imin]+a?[imin+1:]).ToArray;
f.Reset;
foreach b in a do Write(f,b);
f.Truncate;
// вывод содержимого полученного файла
f.Reset;
while not f.Eof do Print(f.Read);
Writeln;
f.Close
end.
Пример
-21 20 37 -30 6 -32 -25 45 -15 -12 0 31 20 -47 -42 41 -38 36 26 -2
-21 20 37 -30 6 -32 -25 45 -15 -12 0 31 20 -90 41 -86 36 26 -50
Замечание
Чтобы получить именно такие данные, укажите в программе
Randomize(3);