Karamelka659
26.06.2020 02:37

:pascal: создать файл f целого типа. вычислить сумму четных компонент файла. увеличить на значение суммы отрицательные компоненты второй половины файла, после этого из файла f удалить минимальную компоненту. исходный и файл после замены распечатать.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Аббос1111
08.10.2020 05:09
// 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
      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);
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота