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

    +163

    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
    17. 17
    long Date :: ConvertToDays()
        {
            int M=0,Y=0;
            for(int i=2;i<=m_Year;i++) 
            {
                if((i%4 == 0) && (i%100 !=0) || (i%400==0))Y+=366;
                else Y+=365;
            }
            for(i=2;i<=m_Month;i++){
                if (i == 1)M=0;else
                if ((((m_Year%4 == 0) && (m_Year%100 !=0) || (m_Year%400==0)) && (i == 3)))M+=29;else
                if ((((m_Year%4 != 0) || ((m_Year%100 ==0) && (m_Year%400 !=0))) && (i == 3)))M+=28;else
                if ((i == 2) || (i == 4) || (i == 6)  || (i == 8) || (i == 9) || (i == 11))M+=31;else
                if ((i == 5) || (i == 7) || (i == 10) || (i == 12))M+=30;
            }
            return m_Day+M+Y;
        }

    Взято с forum.xakep.ru

    Запостил: psina-from-ua, 14 Ноября 2010

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

    • Больше похоже на решение какой-то олимпиадной задачи школьником.
      Ответить
      • Из того что написал автор этого кода я понял что это никакая не олимпиадная задача. Возможно д\з, или студенческая лаба, или еще что-то.
        Ответить
    • Первый раз встречаю разделенные пробелами имя класса и метода вокруг ::
      Не понятно почему цикл с двойки начинается. Нулевого года н.э. не было, но первый то был.
      Ответить
      • ну, судя по дальнейшему форматированию - лапки иногда соскальзывали с Ctrl+C/Ctrl+V на пробел, никакого сакрального смысла. как бы неудивительно, кем бы себя не возомнил журнал "страна игр" - он останется сраным игрожуром
        Ответить
        • это всёго лишь форум. Кто это писал, ещё неизвестно.
          Ответить
          • Кто-кто... Дейкстра в костюме ступидента и смешной шапочке
            Ответить
      • >> Не понятно почему цикл с двойки начинается.

        Потому что
        int M=0,Y=0;
        ...
        if (i == 1) M=0; else

        Автор решил пропустить бесполезную строку, но забыл удалить её
        Ответить
        • Похоже на то. Определение в двух местах високосного года тоже доставляет.
          Ответить
    • очередная говнолаба без массивов и с копипастой?

      КГ/АМ
      Ответить
    • не тока год с двойки, и вообще как это понимать?!
      for(i=2;i<=m_Month;i++){
      if (i == 1)M=0;else
      задача для 1-го курса, 1-й лабы, как разминочная. не более.
      Ответить
    • Так и быть , +1, но только если ТС даст пруфлинк.
      Ответить
    • for(i=2;i<=m_Month;i++){
      if (i == 1)M=0;else

      )
      Ответить
    • Кстати, а зачем при проверке високосного года проверять, кратен ли год 100? Если год кратен 100, то он кратен и 4 (так как 4 является делителем 100) .
      Ответить
      • Там условия проверки разные, если обратить внимание (равенство и неравенство).
        С википедии :
        год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400. 
        Год не является високосным, если он не кратен 4, либо кратен 100 и не кратен 400.
        Ответить
    • Кстати, Григорианский календарь приняли лишь 4 октября 1582 года
      Так что до этой даты високосным годом был тот, который просто делился на 4.
      Ответить
      • теперь понятно почему этот код - говнокод :)
        Ответить

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