1. C++ / Говнокод #8608

    +146

    1. 1
    for (int i=0, N=sizeof(a)/sizeof(int); ++i<N-1; s+=(int)(a[i]>a[i-1]&&a[i]>a[i+1]));

    Это говнокод или годный троллинг? Топик http://forum.codenet.ru/threads/69046-Помогите-задача-С/

    Запостил: mrxak, 22 Ноября 2011

    Комментарии (13) RSS

    • 1. Где здесь C++?
      2. N=sizeof(a)/sizeof(int) - так не надо делать.
      3. Границы диапазона?
      Ответить
      • 1. объявление переменной в цикле
        2. почему?
        3. что границы?
        Ответить
        • ну кстати с 2 я согласен..
          template<typename T, size_t N>
          inline size_t LengthOf(T (&x)[N])
          {
            return N;
          }

          было бы правильнее.. только тогда это уже не однострочник будет
          Ответить
        • 1. Да ну?
          2. Лучше sizeof(a)/sizeof(a[0]). А ещё лучше - vector.
          3. a[0]>a[1]?
          Ответить
          • простите, но на какой итерации вы увидели a[0] > a[1]??
            Ответить
            • В том-то и дело, что не увидел, а такой случай возможен.
              Ответить
              • Вообще это зависит от трактовки формулировки. По мне формулировка топикстартера на коденете "найти количество элементов, которые больше своих соседей." означает, что соседей больше одного. Иначе это должно обговариваться отдельно, равно как и последний элемент тогда.
                Ответить
          • 1. в Си все переменные объявляются в начале блока
            2. о каком векторе речь, если вы здесь С++ не увидели? про размер первого эл-та согласен.
            Ответить
    • пардон, с плюсами погорячился, обычный си..
      а что с границами? i-1 за границы не вылезает (так как ++i в условии, а for реализуется в цикл с предусловием), i+1 тоже не вылезает, так как <N-1.. и код компилится и работает, кстати))
      Ответить
    • gamedev=>codenet mrxakGonvo?
      Ответить
    • еще, конечно, автора спасло, что i, N оказались типа int, а не, как положено, size_t
      но как было сказано выше, случай
      int a[] = {1, 0, 0, 0, 0, 1};
      не обрабатывается никак
      Ответить
    • показать все, что скрытоvanished
      Ответить

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