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

    +149

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    unsigned arrtoint(u_char *arr)
    {
        unsigned r=0;
        unsigned s=0xFF;
        for(unsigned int i=0; i<4; i++)
        {
            r+=arr[i]*s;
            s*=0xFF;
        }
        return r;
    }

    Крайне неудачная попытка моего коллеги сконвертить IP в число. Кто найдет больше ошибок?

    guest, 15 Апреля 2009

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

    +154

    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
    #include "stdafx.h"
    #include "windows.h"
    #include <iostream>
    int main()
    {
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
    ZeroMemory( &pi, sizeof(pi) );
    SECURITY_ATTRIBUTES secat;
    secat.nLength = sizeof(SECURITY_ATTRIBUTES);
    secat.bInheritHandle = TRUE;
    HANDLE newin, writein;
    CreatePipe(&newin,&writein,&secat,0);
    si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOWNORMAL;
    si.hStdInput=newin;
    GetStartupInfoA(&si);
    si.cb;
    CreateProcessA(NULL, "cmd.exe", NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
    DWORD bytes;
    char command[100] = "mkdir 1254655553";
    WriteFile(writein, command, 100, &bytes, NULL);
    std::cin.get();
    }

    Создание директории.
    p.s. ачат и иже с ним.

    guest, 10 Апреля 2009

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

    +1034.8

    1. 1
    2. 2
    int i=8, a1, a2;
    for (a1=a2=1; i>2; a1=(a2+=a1)-a1) i--;

    Вычисление i-го числа из ряда Фиббоначи.
    Ответ в а2.
    ЗЫ. Эта прога съела мозг учителя в институте. Рекомендую ;)

    guest, 10 Апреля 2009

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

    +179.1

    1. 1
    #define ItIsNotRecommendedToLookToInvalids_OlderPersonsAndPeopleWithWeakNerves int main

    Мало ли...

    guest, 09 Апреля 2009

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

    +154

    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
    bool tblmove(tbltype &tbl, tblmoveT move)
    {
        tblpos emptypos = tblgetempty(tbl);
        tblelmnt elmnt;
        switch(move)
        {
        case UP:
            if(emptypos.i == tbl.begin()) break;
            elmnt = (emptypos.i-1)->at(distance((emptypos.i)->begin(),emptypos.j));
            (emptypos.i-1)->at(distance((emptypos.i)->begin(),emptypos.j)) = EMPTYEL;
            *(emptypos.j) = elmnt;
            return true;
        case DOWN:
            if(emptypos.i+1 == tbl.end()) break;
            elmnt = (emptypos.i+1)->at(distance((emptypos.i)->begin(),emptypos.j));
            (emptypos.i+1)->at(distance((emptypos.i)->begin(),emptypos.j)) = EMPTYEL;
            *(emptypos.j) = elmnt;
            return true;
        case LEFT:
            if(emptypos.j == (emptypos.i)->begin()) break;
            elmnt = *(emptypos.j-1);
            *(emptypos.j-1) = EMPTYEL;
            *(emptypos.j) = elmnt;
            return true;
        case RIGHT:
            if(emptypos.j+1 == (emptypos.i)->end()) break;
            elmnt = *(emptypos.j+1);
            *(emptypos.j+1) = EMPTYEL;
            *(emptypos.j) = elmnt;
            return true;
        }
        return false;
    }

    кусок из самопальных пятнашек. stl только усугибило картину. тошнотворно....

    guest, 06 Апреля 2009

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

    +140.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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    p2 = p2 + sizeof("\nbookname=") - 1;
        p3 = strchr(p2, '\n');
        bookname.assign(p2, p3 - p2);
    
        p2 = strstr(p1, "\nauthor=");
        if (p2)
        {
            p2 = p2 + sizeof("\nauthor=") - 1;
            p3 = strchr(p2, '\n');
            author.assign(p2, p3 - p2);
        }
    
        p2 = strstr(p1, "\nemail=");
        if (p2)
        {
            p2 = p2 + sizeof("\nemail=") - 1;
            p3 = strchr(p2, '\n');
            email.assign(p2, p3 - p2);
        }
    
        p2 = strstr(p1, "\nwebsite=");
        if (p2)
        {
            p2 = p2 + sizeof("\nwebsite=") - 1;
            p3 = strchr(p2, '\n');
            website.assign(p2, p3 - p2);
        }
    
        p2 = strstr(p1, "\ndate=");
        if (p2)
        {
            p2 = p2 + sizeof("\ndate=") - 1;
            p3 = strchr(p2, '\n');
            date.assign(p2, p3 - p2);
        }
    
        p2 = strstr(p1, "\ndescription=");
        if (p2)
        {
            p2 = p2 + sizeof("\ndescription=") - 1;
            p3 = strchr(p2, '\n');
            description.assign(p2, p3 - p2);
        }
    
        p2 = strstr(p1, "\nsametypesequence=");
        if (p2)
        {
            p2 += sizeof("\nsametypesequence=") - 1;
            p3 = strchr(p2, '\n');
            sametypesequence.assign(p2, p3 - p2);
        }

    Опять на арене Стардикт, написанный криворукими китаезами. Вот как они читают значения из БИНАРНОГО файла (это только кусочек листинга):

    guest, 06 Апреля 2009

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

    +142.8

    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
    #include <stdio.h>
    #include <alloc.h>
    
    #define PRINT_RESULT {for(cheacksum1=0,i=MaxV-1;i>=0;cheacksum1+=vect[i--]);for(j=i=cheacksum2=0;j<MaxA;i<MaxA?cheacksum2+=mass[j][i++]:(j++,i=0));printf("CHEACKSUM: %d <-> %d\n",cheacksum2,cheacksum1);}
    
    int main(void)
    {
        int **mass,*vect,MaxV,MaxA,x,y,i,j,z,k,l,s,m,cheacksum1,cheacksum2;
        MaxV *= MaxV = MaxA = 200; 
        for(i=0,vect=(int*)malloc(sizeof(int)*MaxV),mass=(int**)malloc(sizeof(int*)*MaxA);i<MaxA;mass[i++]=(int*)malloc(sizeof(int)*MaxA));
        for(i=0,j=0;i<MaxA;j<MaxA?mass[i][j++]=rand()%10:(i++,j=0));
        /* A */ for(y=z=j=0,i=x=MaxA-1;y<MaxA;(j>=MaxA||i>=MaxA?((x>0?x--:y++),i=x,j=y):vect[z++]=mass[i++][j++]));
        PRINT_RESULT;
        /* B */ for(y=x=z=j=i=0;y<MaxA;(j>=MaxA||i<0?((x<MaxA-1?x++:y++),i=x,j=y):vect[z++]=mass[i--][j++]));
        PRINT_RESULT;
        /* C */ for(s=z=k=0,l=1,m=x=y=MaxA%2==0?m=x=y=MaxA/2-1:MaxA/2;x<MaxA&&y<MaxA&&x>=0&&y>=0;k++<l?vect[z++]=mass[s==1?y++:s==3?y--:y][s==0?x++:s==2?x--:x]:(k=0,s++<3?(s==2?l++:0):(s=0,l++)));
        PRINT_RESULT;
        /* D */ for(z=x=y=k=0,s=-1,l=MaxA-1;l>=0;l>0?k++<l?vect[z++]=mass[s==0?y++:s==2?y--:y][s==1?x--:s==0||s==2?x:x++]:(k=0,s++<3?(s==2?l--:0):(s=0,l--)):(vect[z]=mass[y][x],l--));
        PRINT_RESULT;
        for(x=0;x<MaxA;free(mass[x++])); free(vect); free(mass);
        return 0;
    }

    Лабораторная работа (давно было дело... не помню, окончательная версия или нет) :]

    Обход матрицы и запись результата обхода в одномерный массив.
    а) по правой диагонали начиная с правого верхнего
    элемента
    б) с левого верхнего.
    с) по сперали
    д) по сперали начниная с левого верхрего элемента.

    guest, 06 Апреля 2009

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

    +155.4

    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
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    .....
    	double CHTerritory;
    	int CHNextGeneration;
    	int CHPeople;
    	int CHScTurns;
    	int CHDefMin;
    	int CHDefMax;
    	int CHAtMin;
    	int CHAtMax;
    	int CHArmies;
    	int CHGrain;
    	int CHScientist;
    	double CHMoney;
    	int CHUnHP_1;
    	int CHArm;
    	int CHATT;
    	int CHDEFF;
    	int CHUnHP;
    	int CHArm_1;
    	int AtChoice;
    ....
    Begin:	
    	int Choice;
    
    	cout << "\n""Year: ";
    	cout << Year;
    
    	cout << "\n""Money ";
    	cout << Money;
    	cout << " $";
    
    	Tax = People / 2;
    	cout << "\n""Tax: ";
    	cout << Tax;
    	cout << " $";
    
    	cout << "\n""Territory: ";
    	cout << Territory;
    	cout << " KM^2";
    
    	cout << "\n""What do you want?";
    	cout << "\n""Science - 1, Army - 2, Agrarian Production - 3,";
    	cout << "\n""Social Question - 4, Next Year - 5, Spy - 6, Exit - 7: ";
    
    	cin >> Choice;
    	if(Choice == 1)
    	{
    		goto Science;
    	}
    	if(Choice == 2)
    	{
    		goto Army;
    	}
    	if(Choice == 3)
    	{
    		goto AgrarianProduction;
    	}
    	if(Choice == 4)
    	{
    		goto SocialQuestion;
    	}
    	if(Choice == 5)
    	{
    		goto NextYear;
    	}
    	if(Choice == 6)
    	{
    		goto Spy;
    	}
    	if(Choice == 7)
    	{
    		goto Replay;
    	}
    	else
    	{
    		cout << "\n""TbI Tynou ?";
    		cout << "\n";
    		goto Begin;
    	}
    ....
    if(AmUnHP_1 <= 0)
    {
    	AmArmies = AmArmies - 1;
    	goto LKJMNZZA;
    }
    else
    {
    	goto LKJMNZZB;
    }

    Моя одна из первых "серьезных" программ на С++, показывающая, что даже без знаний (главное - желание) можно писать БОЛЬШИЕ программы. Программа - стратегическая консольная игра, исходник в 64 КБ и все в... ОДНОЙ функции main :) также тогда еще не знал о существовании массивов, switch и многого другого:) К сожалению все 4000 строк кода сюда не влезают, так что вот примеры стандартных участков кода.

    guest, 26 Марта 2009

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

    +141.4

    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
    int __fastcall TForm1::iscomm(AnsiString str)
    {
    int i=1;
    while (str[i]==' ')
     i++;
    if (str[i]=='#')
     {
      return 1;
     }
    else
     {
      return 0;
     };
    };

    borland C++.
    Функция определяет, является ли строка комментарием (начинается с #)

    guest, 26 Марта 2009

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

    +162.5

    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
    UGL_STATUS CBitmap::StretchBlt(CBitmap * src,int srcIndex, int index)
    {
    	UGL_GC_ID gc;
    	UGL_POS srcWidth;
    	UGL_POS srcHeight;
    	UGL_POS width = Width();
    	UGL_POS height = Height();
    	UGL_RECT srcRect = src->Rect();
    	UINT32 * srcDataLine;
    	UINT32 * destDataLine;
    
    	if( src == NULL )
    		return UGL_STATUS_ERROR;
    	...
    }

    см. строки 8 и 12-13 :)

    guest, 25 Марта 2009

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