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

    +150

    1. 1
    tmp = (tmp <= a) ? a : tmp;

    Не то чтобы говнокод, но и от ": tmp;" никак не избавится. Да и if писать ломает...)

    -- Aquarius

    guest, 24 Марта 2009

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

    +1035.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
    string html;
    
    fill(html);
    
    string cleaner = "</font>""</font>""</font>""</font>""</font>""</font>"
    "</font>""</font>""</font>""</font>""</font>""</font>"
    "</b></b></b></b></b></b></b></b>"
    "</i></i></i></i></i></i></i></i>";
    
    html += cleaner;
    
    return html;

    китаеза таким образом борется с закрытием HTML-тегов :) Чтоб наверняка)))

    guest, 23 Марта 2009

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

    +148

    1. 1
    void example1237891314151920212226272832333438394044454650494847434241373635312928252423181716121110654 (...)

    Задали заполнить массив определенной последовательностью...с понятными названиями

    guest, 22 Марта 2009

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

    +161.2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    bool HaW::Object::DestroyMutex()
    {
    	if (0 != pthread_mutex_destroy(&pMutex))
    		if (0 == pthread_mutex_unlock(&pMutex))
    			if(0 == pthread_mutex_destroy(&pMutex))
    				return true;
    			else
    				return false;
    		else
    			return false;
    }

    Метод для освобождения мьютекса, POSIX

    guest, 19 Марта 2009

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

    +144.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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
     if ((timeinfo->tm_mon + 1) < 10)
        tmp_file << "0" << timeinfo->tm_mon + 1;
     else
        tmp_file << timeinfo->tm_mon + 1;
     
    if (timeinfo->tm_mday < 10)
       tmp_file << "0" << timeinfo->tm_mday << ";";
    else
       tmp_file << timeinfo->tm_mday << ";";
    
    if (timeinfo->tm_hour < 10)
        tmp_file << "0" << timeinfo->tm_hour << ":";
    else
        tmp_file << timeinfo->tm_hour << ":";
    
    if (timeinfo->tm_min < 10)
        tmp_file << "0" << timeinfo->tm_min << ":";
    else
        tmp_file << timeinfo->tm_min << ":";
    
    if (timeinfo->tm_sec < 10)
        tmp_file << "0" << timeinfo->tm_sec;
    else
        tmp_file << timeinfo->tm_sec;

    Что бы вы думали код делает?
    формирует дату в стиле "YYYYMMDD;HH:MM:SS"
    Про setw мы не слышали и на крайний случай в Си стиле "%02d" тоже :(

    guest, 19 Марта 2009

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

    +146.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for (int i = (orientation == Qt::Horizontal ? x : y); i < x+size; ++i)
        addPipe(orientation == Qt::Horizontal ? i : x, 
                orientation == Qt::Horizontal ? y : i, 
                orientation == Qt::Horizontal,
                orientation == Qt::Horizontal,
                orientation != Qt::Horizontal,
                orientation != Qt::Horizontal,
                randomRotation);

    guest, 18 Марта 2009

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