profile
Размещено 5 лет назад по предмету Информатика от topwkolnik

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

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

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.