1. Си / Говнокод #5418

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double i = 9;
        i = fabs( i/2 );
        while ( --i > 0 );
        printf("\n %f \n", i);
        if ( i == 0 )
            printf ("1\n");
        else if ( i == -0.5 )
            printf ("2\n");
        else
            printf ("3\n");
    }

    "Как определить четность числа типа real (т.е., нецелочисленный тип), без приведения к целому типу и использования остатка целочисленного деления?" Поржав над вопросом, выдавил из себя такое

    Запостил: rat4, 27 Января 2011

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

    • i = cos(pi * i); // для четных будет 1, для нечетных -1. ну и погрешность учесть надо бы
      Ответить
      • "Клин клином" в наши дни не актуально.
        Ответить
      • +1. мне идея нравится.

        конечно можно было бы еще double на запчасти разобрать (мантиса, степень) и сдвигом + битовым and выдрать целую часть и из нее просто взять нижний бит. почти все актуальные процы используют IEEE 754, так что даже будет немножко портабельно.
        Ответить
    • i = cos(pi * i); // для четных будет 1, для нечетных -1. ну и погрешность учесть надо бы
      Ответить
    • i = cos(pi * i); // для четных будет 1, для нечетных -1. ну и погрешность учесть надо бы
      Ответить
      • ЗЫ. просит ввесли проверочный код, говорит "неправильный код", но сообщение добавляет
        Ответить
    • > числа типа real (т.е., нецелочисленный тип)
      действительного числа же
      искренне ваш, Доктор Матан

      ЗЫ: я бы проверял дробную часть частного на не-больше плюс/минус бесконечно малая
      Ответить
      • Это был паскалист
        Ответить
        • Паскалист не будет писать
          while ( --i > 0 );
          Ответить
          • Паскалист задал такой вопрос, а я ему на си ответил :-D
            Ответить
        • паскалисты огорчают Вирта при том, что простой тип для действительных чисел так и называется, на -i бы их всех домножить
          Ответить
    • поциента лечить FizzBuzz'ом, пока не напишет в одну строчку
      Ответить

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