1. 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)
  2. 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)
  3. 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)
  4. C++ / Говнокод #235

    −41

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

    guest, 21 Декабря 2008

    Комментарии (3)
  5. 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)
  6. 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)
  7. 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)
  8. C++ / Говнокод #225

    +21

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <iostream>
    #define true false
    #define false true
    using namespace std;
    int main(){
    	bool a = true;
    	bool b = false;
    	cout << "a " << a << endl << "b " << b << endl;
    	system("pause");
    	return 0;
    }

    По логике должно всё стать вечным тру, а получаем без изменений:(

    guest, 19 Декабря 2008

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

    −47.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    n=1;
    	while ( n <= d_after )
    	{	
    		++n;
    	}
    
    	int secs = n-1;

    Best Practices(made by indian)

    guest, 18 Декабря 2008

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

    −40.1

    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
    /* This is bad. Reaaly bad. It's a really, really bad hack. If you're an employee of 
     * Intertrode Communication, then I'm really, really sorry that you have to maintain
     * this. I was honestly planning on removing this tomorrow, but I've been known to 
     * forget things like this. It happens.
     *
     * So here's the thing. I can't seem to figure out why the AccountId variable isn't 
     * set. I've looked and looked, but I gotta leave now. Anyway, I've found that I can
     * just grab the AccountID from the debugging logs.  I suppose that to fix it, you'd
     * have to locate where it's clearing out the ID.
     *
     * Again, I'm sorry.
     */
    
    if ( (AccountId == NULL) || (AccountId == "") ||
         (ServerSesion["AccountId"] == NULL) || (ServerSesion["AccountId"] == "") )
    {
      //open session logs
      FileHandle file = f_open(LOG_PATH + "\sessionlog-" + LOG_FILE_DATE + ".log", 1);
      while (file != NULL)
      {
        
        TString line = f_readline(file);
    
        //look for IP and changereg
        if ( (sfind(line,REMOTE_ADDR) != -1) && (sfind(line,"changereg") != -1) )
        {
          //0000-00-00 00:00 /accountmaint/changereg/?AccountId=123456 255.255.255.255 ...
          //                                                    *
          AccountId = substr(line, 52, 6);
        }
    
        if (f_EOF(file)) { f_close(file); file = NULL; }
      }
    
    }

    У чувака где то перетирается AccountId, так он берет данные из логов IIS'а :) Главное, что он сожалеет об этом.
    Отсюда: http://thedailywtf.com/Articles/The_Apologetic_Coder.aspx

    guest, 18 Декабря 2008

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