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

    +15.2

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
    {
        int dayofweek, month, year;
        UINT8 *month_tab;
    
        //Calculate current day of the week
        dayofweek = GetDayOfWeek(days);
    
        year = ORIGINYEAR;
    
        while (days > 365)
        {
            if (IsLeapYear(year))
            {
                if (days > 366)
                {
                    days -= 366;
                    year += 1;
                }
            }
            else
            {
                days -= 365;
                year += 1;
            }
        }
    
    
        // Determine whether it is a leap year
        month_tab = (UINT8 *)((IsLeapYear(year))? monthtable_leap : monthtable);
    
        for (month=0; month<12; month++)
        {
            if (days <= month_tab[month])
                break;
            days -= month_tab[month];
        }
    
        month += 1;
    
        lpTime->wDay = days;
        lpTime->wDayOfWeek = dayofweek;
        lpTime->wMonth = month;
        lpTime->wYear = year;
    
        return TRUE;
    }

    То что вызвало зависание всех MS Zune 30Gb по всему миру.

    guest, 03 Января 2009

    Комментарии (39)
  2. C++ / Говнокод #314

    +29

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    double StrToMoney(AnsiString str)
    {
      str = AnsiReplaceStr(str, "-", ".");
      char *buffer = str.c_str();
      double val;
      sscanf(buffer,"%lf",&val);
      return val;
    }

    Быдлокодер на борланд С++ хотел сконвертить в число деньги в формате рубли-копейки. И сделал это наименее эффективным образом.

    guest, 31 Декабря 2008

    Комментарии (0)
  3. C++ / Говнокод #295

    +21

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for(int i=0;i<m_tabWidget->count();i++){
    		textEdit = (TextEdit*)m_tabWidget->widget(i);
    		if( textEdit && textEdit->close()){
    			delete textEdit;
    			textEdit = 0;
    		}
                    else break;
    	}

    Часто забывают, что количество элементов в списке изменяется при удалении из него.

    guest, 26 Декабря 2008

    Комментарии (3)
  4. C++ / Говнокод #286

    +848.7

    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
    int p,k,l,i,j,d,q,R,t,r;
      S1:    s=0; p=1;
      S2:    if (s==0) { i=1; j=n; k=n; l=2*n+1; }
             if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
             d=1; q=p; r=p;
      S3:    if (x[i]>K>x[j]->K) goto S8;
      S4:    k=k+d; x[k]=x[i]; c[k]=c[i];
      S5:    i+=1; q-=1; if (q>0) goto S3;
      S6:    k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
      S7:    j-=1; r-=1; if (r>0) goto S6; else goto S12;
      S8:    k+=d; x[k]=x[j]; c[k]=c[j];
      S9:    j-=1; r-=1; if (r>0) goto S3;
      S10:   k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
      S11:   i+=1; q-=1; if (q>0) goto S10;
      S12:   q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
      S13:   p+=p; if (p<n) { s=1-s; goto S2; }
             if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }

    Вот такой вариант сортировки предложен в одной известной книге. Оно работает...

    guest, 26 Декабря 2008

    Комментарии (49)
  5. C++ / Говнокод #248

    −63.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void SimplexIteration::ReWidth()
    {  w[-2]=w[0]=Width; w[-1]=5; for(size_t j=1;j<A.size_j();j++) w[j]=Width;
       if (var) for(size_t j=1; j<A.size_j(); j++)
                   if(strlen(var[j])>w[j]) w[j]=strlen(var[j]);
    }

    Особенно порадовало w[-2]. Знаю, что так можно, но все равно говнисто.

    guest, 23 Декабря 2008

    Комментарии (43)
  6. C++ / Говнокод #247

    −46.6

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    switch (*p)
             {
                case '0': id += 0; break;
                case '1': id += 1; break;
                case '2': id += 2; break;
                case '3': id += 3; break;
                case '4': id += 4; break;
                case '5': id += 5; break;
                case '6': id += 6; break;
                case '7': id += 7; break;
                case '8': id += 8; break;
                case '9': id += 9; break;
                case 'a': case 'A': id += 10; break;
                case 'b': case 'B': id += 11; break;
                case 'c': case 'C': id += 12; break;
                case 'd': case 'D': id += 13; break;
                case 'e': case 'E': id += 14; break;
                case 'f': case 'F': id += 15; break;
                case 'g': case 'G': id += 16; break;
                case 'h': case 'H': id += 17; break;
                case 'i': case 'I': id += 18; break;
                case 'j': case 'J': id += 19; break;
                case 'k': case 'K': id += 20; break;
                case 'l': case 'L': id += 21; break;
                case 'm': case 'M': id += 22; break;
                case 'n': case 'N': id += 23; break;
                case 'o': case 'O': id += 24; break;
                case 'p': case 'P': id += 25; break;
                case 'q': case 'Q': id += 26; break;
                case 'r': case 'R': id += 27; break;
                case 's': case 'S': id += 28; break;
                case 't': case 'T': id += 29; break;
                case 'u': case 'U': id += 30; break;
                case 'v': case 'V': id += 31; break;
                case 'w': case 'W': id += 32; break;
                case 'x': case 'X': id += 33; break;
                case 'y': case 'Y': id += 34; break;
                case 'z': case 'Z': id += 35; break;
             }

    считаем нечто типа хэша. захотим изменить алгоритм, сделав вместо сложения - ксор, будем фаница реплейсом.
    источник http://www.winsim.com/diskid32/diskid32.cpp
    там же красивые переменные int ijk = 0;

    guest, 23 Декабря 2008

    Комментарии (11)
  7. C++ / Говнокод #235

    −41

    1. 1
    flag = bool(int(flag) - 1);

    guest, 21 Декабря 2008

    Комментарии (3)
  8. C++ / Говнокод #228

    +20

    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
    source code: C++
    
    
    enum e_acomany {
    	Audi,
    	BMW, 
    	Cadillac, 
    	Ford,
    	Jaguar, 
    	Lexus 
    	Maybach, 
    	RollsRoyce, 
    	Saab
    };
    ?>

    Маны бывают разные. Этот, например, по C++

    guest, 20 Декабря 2008

    Комментарии (20)
  9. C++ / Говнокод #227

    −74.2

    1. 1
    2. 2
    3. 3
    4. 4
    CString temp;
    temp.Preallocate(5000);
    GetName(temp.GetBuffer());
    name_.Format(L"%s", temp);

    На самом деле после GetBuffer нужен ReleaseBuffer и Preallocate резервирует место, но не устанавливает длину.
    Эти ошибки приводят к тому что использование name_ в GetName не работает и name_ = temp тоже не работает.
    Хитрый "индокодер" выкрутился через Format.

    guest, 19 Декабря 2008

    Комментарии (21)
  10. C++ / Говнокод #226

    +24

    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
    while (!bFound && j < enmMessages)
    {
    	if (!strcmp(str.operator const char * (), strPacketName[j]))
    	{
    		iPacketType = j;
    		bFound = true;
    		TRACE(" of type %s\n",strPacketName[j]);
    		strcat(strOut," of type ");
    		strcat(strOut, strPacketName[j]);
    		break;
    	}
    	j++;
    }

    guest, 19 Декабря 2008

    Комментарии (23)