В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
shlykhta95
shlykhta95
18.02.2022 07:49 •  Информатика

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

Показать ответ
Ответ:
динозаурус
динозаурус
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-бота