• [100баллов]:PASCAL:
    Создать файл F целого типа. Вычислить сумму четных компонент файла. Увеличить на значение суммы отрицательные компоненты второй половины файла, после этого из файла F удалить минимальную компоненту. Исходный и файл после замены распечатать.

Ответы 3

  • Все ок,спасибо.Но мне не понятны эти сокращения типа "f.Close", и цикл с loop.Можно ли как-нить обойтись без них?
  • Это не сокращения, это полноценный код. Обойтись можно, используя другой стиль программирования. Программа, довольно уже большая, будет еще почти вдвое длиннее.
  • // 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.Closeend.Пример-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);
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years