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

    +20.7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    .....
    int i;
    .....
    int b=i/2;
    if(i==b*2)//проверка на четность
    {
    .....

    Запостил: schaos, 14 Августа 2009

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

    • зачОт!
      Ответить
    • мдяяяяяя
      Ответить
    • Что курил автор? Я тоже хочу такой травы!
      Ответить
    • Покурил травки и решил, что так будет круче:
      ...
      int i;
      ...
      if (!(i & 1))
      {
      .......
      Ответить
      • жжошь!))
        у тебя он еще говнокодистей получился!
        Ответить
        • Автор как раз хорошо написал, а говнокодом было бы такое:
          int i;
          ...
          if (i == ((i>>1)<<1))
          {
          printf("Even");
          }
          else
          {
          printf("Not even");
          }
          Ответить
          • Это, кстати всё-равно быстрее работает, чем то, что предолжено изначально - "(i/2)*2" :)
            Ответить
        • Неужто
          if(i%2 == 0)
          {
          ...
          работает быстрее моего варианта?

          Ну тогда держи варианты покруче ;)

          bool IsEven(int number)
          {
          char str[100];
          itoa(number, str, 10);
          char last = str[strlen(str) - 1];
          return ((last == '2') || (last == '4') || (last == '6') || (last == '8') || (last == '0'));
          }

          bool IsEven2(int number)
          {
          char str[100];
          itoa(number, str, 10);
          char last = str[strlen(str) - 1];

          bool arr[10] = {true, false, true, false, true, false, true, false, true, false};
          return arr[last - '0'];
          }
          Ответить
        • Говнистее? О_о да это самое оптимальное решение. Для того, чтобы это понять нужно вспомнить как числа в компьютере представляются и что делает операция &
          Ответить
        • Я вот ещё придумал один метод :)

          bool IsEven3(int number)
          {
          return (number << (sizeof(number) << 3) > 0);
          }
          Ответить
      • молоток, изящное решение! каммент добавить только, и можно в продакшен
        Ответить
      • _asm
        {
        mov eax,i
        test eax, eax
        jnp NotEven
        ...
        jmp End
        NotEven:
        ...
        End:
        ...
        }
        Ответить
    • Нам такую формулу в школе давали...
      Ответить

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