1. VisualBasic / Говнокод #19379

    −35

    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
    Function GetLongFromData(InDay As Integer, InMonth As Integer, InYear As Integer) As Integer
    	If InYear Mod 4 = 0 Then N = 1 Else N = 0
    	If InMonth = 1 Then temp = InDay
    	If InMonth = 2 Then temp = InDay + 31
    	If InMonth = 3 Then temp = InDay + 31 + 28 + N
    	If InMonth = 4 Then temp = InDay + 31 + 28 + 31 + N
    	If InMonth = 5 Then temp = InDay + 31 + 28 + 31 + 30 + N
    	If InMonth = 6 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + N
    	If InMonth = 7 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + N
    	If InMonth = 8 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + N
    	If InMonth = 9 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + N
    	If InMonth = 10 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + N
    	If InMonth = 11 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + N
    	If InMonth = 12 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + N
    	GetLongFromData = temp
    End Function

    Функция, принимающая дату и возвращающая номер дня в году.

    Запостил: roman_gemini, 01 Февраля 2016

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

    • Кто так форматирует? Глаза же болят. Во истину говнокод.
      Function GetLongFromData(InDay As Integer, InMonth As Integer, InYear As Integer) As Integer
      	If InYear Mod 4 = 0 And InYear Mod 100 <> 0 Or InYear Mod 400 = 0 Then N = 1 Else N = 0
      	If InMonth < 3 Then N = 0
      	If InMonth =  1 Then temp = InDay + N
      	If InMonth =  2 Then temp = InDay + 31 + N
      	If InMonth =  3 Then temp = InDay + 31 + 28 + N
      	If InMonth =  4 Then temp = InDay + 31 + 28 + 31 + N
      	If InMonth =  5 Then temp = InDay + 31 + 28 + 31 + 30 + N
      	If InMonth =  6 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + N
      	If InMonth =  7 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + N
      	If InMonth =  8 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + N
      	If InMonth =  9 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + N
      	If InMonth = 10 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + N
      	If InMonth = 11 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + N
      	If InMonth = 12 Then temp = InDay + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + N
      	GetLongFromData = temp
      End Function

      Выправил лесенку.
      Ответить
      • Вот где сишного свича не хватает...
        switch (InMonth)
        {
        case 12: temp += 30;
        case 11: temp += 31;
        // ...
        case  5: temp += 30;
        case  4: temp += 31;
        case  3: temp += 28;
        case  2: temp += 31;
        case  1: temp += N;
        }
        Ответить
        • Борманд везде fall-through применение найдет.
          Ответить
        • Совет дня: свищ в 95% можно заменить (ассоциативным) массивом.
          int[] month={N,31,28,31,30,...,31,30};
          for (int i=0;i<InMonth;++i)
              temp+=month[i];
          Ответить
          • ..которого у сишкоблядей нету.
            Ответить
            • Ты же про литерал ассоциативного массива? Ну и про стандартную либу, если не про литерал. Так то скачать/запилить сраный хешмап никто не мешает.
              Ответить
        • в VB есть switch, только называется select:
          select case xxx
          case 1
          ....
          case 2
          ...
          end select
          Ответить
    • эх молодец и високосный год учел. Один вопрос в VB нет доступа к календарным функциям?
      Ответить
      • Есть, но в то время у меня небыло доступа к мануалам и справочникам. Сохранил на память - вот и пригодилось :)
        Ответить
    • Судя по всему - в современном календаре давно зарыт говнокод.
      Ответить
      • Это да. Особенно в той секунде, которую добавляют к году, когда становится скучно.
        Ответить
        • Надо землю немножко притормозить или разогнать...
          Ответить
          • ОТРЕФАКТОРИТЬ
            Ответить
          • А можно секунду удлиннить или укоротить. Во всемирный фан-то начнётся!
            Ответить
            • Дык секунда она просто условная единица... А вот соотношение между сутками и годом привязано к вращению и кривое ;(
              Ответить

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