Решаем задачи Абрамян на Паскале. Series19

Series19. Дано целое число $$N$$ ($$> 1$$) и набор из $$N$$ целых чисел. Вывести те элементы в наборе, которые меньше своего левого соседа, и количество $$K$$ таких элементов.

Решение:

Решение Newton:

Другие задачи из раздела Series можно посмотреть здесь.

Комментарии:

Комментарии 6

  • Было:

    Стало:

  • Была ли инициализирована переменная Num1 до ее использования в первом прогоне цикла?

    Несколько избыточное ради наглядности решение с элеменами автоматизации:
    // на англ — не люблю часто переключаться между раскладками
    // знаю, что goto+label — это плохо, использую только чтобы зациклить программу для проверки

    • > Была ли инициализирована переменная Num1 до ее использования в первом прогоне цикла?
      Нет не была.
      Что бы её инициализировать надо много писать. А так как компилятор bp позволяет стрелять себе в ногу я не преминул этим воспользоваться.
      Дело в том, что паскаль это строго типизированный язык и в Num1 :Integer всегда будет целое число. Любое но всегда целое. :

      При первом прогоне:
      Num1 не инициализирована (может быть любое число из диапозона целых чисел, дипазон зависит от компилятора)
      i =1
      И вот такое вырожение:
      if (Num1>Num) and (i<>1) then
      По правилам логики (i<>1) = лож, следовательно нам без разницы что получилось вот здесь: (Num1>Num).
      Выражение при первом проходе будет ложным. И да, так можно делать не везде. И лучше так не делать. И особенно не делить на не инициализированные числа . 🙂

      Ну а после того выражения оно сразу приобретает точное значение:
      Num1:=Num;

      >знаю, что goto+label — это плохо, использую только чтобы зациклить программу для проверки
      так зачем? можно заменить конструкцией repeat … until false; или более распростаннёное в других язываках while (true) do begin .. end;

      > на англ — не люблю часто переключаться между раскладками
      да ещё и не везде этот русский будет корректно отображаться. Пишу на русском, что бы не писать комментариев 🙂

  • А по решению, так то это тоже самое решение, что и у меня, но первое значение вводиться до цикла.
    вывел его в шапку.. чтоб если что был бы пример как можно по разному реализовать один и тот же алгоритм. 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *