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

Array26. Дан целочисленный массив размера $$N$$. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести $$0$$, если нет, то вывести порядковый номер первого элемента, нарушающего закономерность.

Решение:

Решение от olegst1975:

Решение Newton:

Решение от Kirk и Anton:

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

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

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

  • Исходные данные
    N = 5
    3 -5 -3 -4 2

    Полученные результаты
    3

    Пример верного решения
    2

  • мда.. опять связался с for и понадеялся на его счётчик… в delphi 7 выводится результат 2 (вроде как всё хорошо). Но получается не стабильно в зависимости от компилятора переписал решение на while:
    Было:

    Стало:

    • Скорее здесь еще один нюанс — знак остатка при его взятии у отрицательного числа. Здесь, наверное, a[-5] mod 2=-1. Поэтому (a[3] mod 2) не равно (a[-5] mod 2).

  • Показалось, что проще проверять числа уже при их вводе(+экономим милисекунды), но можно сделать и отдельным циклом

    [/crayon]

  • Здесь есть момент, по условию массив у нас уже есть. То-есть не имеет значение как мы его получаем.

    А вот процедура continue мне кажется обсолютно не к месту… вроде никто и не собирается останавливать for так что можно так:

    или так:

    Но мне всё равно xor понравился… пока добавил как есть..

  • Я вот так сделал для заданного массива Vector[1..NumOfElements]:
    (правда, не уверен, что выражение FALSE=FALSE будет TRUE во всех языках программирования или компиляторах)

    • Да, хорошее решение. И False всегда равно False. Это логика и соответственно если компилятор хочет выжить, то он всегда это должен правильно обрабатывать. 🙂
      проблемы начинаются с неопределёнными выражениями. Обычно они называются NULL. И вот NULL не равен NULL, обычно! Лучше использовать специальные функции проверки на NULL.
      А ещё по решению, можно убрать пемеременную OddMix. Но получается грамоздко…

      Добавил ваше решение в шапку.

    • Вот эти два условия:

      можно заменить на

      И ещё d не определено до условия… это плохо… далеко не во всех компиляторах это будет работать.

      • Оочень понравилась идея… в общем чуть чуть подкорректировал 🙂 надеюсь вы не против совместного авторства в шапке 🙂

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

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