1. Си / Говнокод #9062

    +135

    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
    try {
            // ....
     } except(EXCEPTION_EXECUTE_HANDLER) {
            Err = ERROR_INVALID_PARAMETER;
            //
            // Access the following variables here so that the compiler will respect our statement
            // ordering w.r.t. these values.  Otherwise, we can't be sure that the values are accurate
            // at the point where the exception occurred.
            //
            Buffer = Buffer;
            Array = Array;
            i = i;
        }

    втф?

    mazafaker666, 10 Января 2012

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

    +142

    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
    static inline gboolean is_alt(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'a' || string[1] == 'A') &&
    		(string[2] == 'l' || string[2] == 'L') &&
    		(string[3] == 't' || string[3] == 'T') &&
    		(string[4] == '>'));
    }
    
    static inline gboolean is_ctl (const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'c' || string[1] == 'C') &&
    		(string[2] == 't' || string[2] == 'T') &&
    		(string[3] == 'l' || string[3] == 'L') &&
    		(string[4] == '>'));
    }
    
    static inline gboolean is_modx(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'm' || string[1] == 'M') &&
    		(string[2] == 'o' || string[2] == 'O') &&
    		(string[3] == 'd' || string[3] == 'D') &&
    		(string[4] >= '1' && string[4] <= '5') &&
    		(string[5] == '>'));
    }
    
    static inline gboolean is_ctrl(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'c' || string[1] == 'C') &&
    		(string[2] == 't' || string[2] == 'T') &&
    		(string[3] == 'r' || string[3] == 'R') &&
    		(string[4] == 'l' || string[4] == 'L') &&
    		(string[5] == '>'));
    }
    
    static inline gboolean is_shft (const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 's' || string[1] == 'S') &&
    		(string[2] == 'h' || string[2] == 'H') &&
    		(string[3] == 'f' || string[3] == 'F') &&
    		(string[4] == 't' || string[4] == 'T') &&
    		(string[5] == '>'));
    }
    
    // ... (ещё 100500 подобных функций)
    // ... а тем временем где-то ниже:
    
    	  if (len >= 9 && is_release (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_RELEASE_MASK;
    	    }
    	  else if (len >= 9 && is_control (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    	  else if (len >= 9 && is_primary (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    	  else if (len >= 7 && is_shift (accelerator))
    	    {
    	      accelerator += 7;
    	      len -= 7;
    	      mods |= EGG_VIRTUAL_SHIFT_MASK;
    	    }
    	  else if (len >= 6 && is_shft (accelerator))
    	    {
    	      accelerator += 6;
    	      len -= 6;
    	      mods |= EGG_VIRTUAL_SHIFT_MASK;
    	    }
    	  else if (len >= 6 && is_ctrl (accelerator))
    	    {
    	      accelerator += 6;
    	      len -= 6;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    
    // ... и так далее. код целиком сюда просто не влезет.

    шедевр. что сравнение строк, что цепочка if-else. все хороши.

    полной версией можно насладиться тут:
    https://github.com/mate-desktop/mate-control-center/blob/master/capplets/keybindings/eggaccelerators.c

    angry C nerd, 06 Января 2012

    Комментарии (15)
  3. Си / Говнокод #8869

    +133

    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
    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    void main() {
    clrscr();
    int i,j,k=0,n=6,l;
    float x[6],y[6],s[11],t[6],ur[6][7],s1;
    
    x[0]=0.1;   y[0]=0.25;
    x[1]=0.3;   y[1]=0.5;
    x[2]=0.4;   y[2]=0.65;
    x[3]=0.6;   y[3]=0.55;
    x[4]=0.7;   y[4]=0.42;
    x[5]=0.8;   y[5]=0.3;
    
    
    for(i=0;i<6;i++) {
    s[i]=0;
    for(j=0;j<6;j++)
    s[i]+=exp(i*log(x[j]));
    printf("%.2f\n",s[i]);
    
    }
    
    for(i=0;i<6;i++){
    t[i]=0;
    for(j=0;j<6;j++)
    t[i]+=pow(x[j],i)*y[j];}
    
    //----------------------------Gaus-----------------
    for(i=0;i<6;i++)
    for(j=0;j<7;j++)
    ur[i][j]=0;
    
    l=3;
    for(i=0;i<6;i++) {
    k=0;
    for(j=i;j<l;j++){
    
    
    ur[i][k]=s[j];
    k++;}
    
    ur[i][k]=t[i];
    l++;
    }
    n=3;
    ur[0][0]=s[0]; ur[0][1]=s[1]; ur[0][2]=s[2]; ur[0][3]=s[3]; ur[0][4]=s[4]; ur[0][5]=s[5]; ur[0][6]=t[0];
    ur[1][0]=s[1]; ur[1][1]=s[2]; ur[1][2]=s[3]; ur[1][3]=s[4]; ur[1][4]=s[5]; ur[1][5]=s[6]; ur[1][6]=t[1];
    ur[2][0]=s[2]; ur[2][1]=s[3]; ur[2][2]=s[4]; ur[2][3]=s[5]; ur[2][4]=s[6]; ur[2][5]=s[7]; ur[2][6]=t[2];
    ur[3][0]=s[3]; ur[3][1]=s[4]; ur[3][2]=s[5]; ur[3][3]=s[6]; ur[3][4]=s[7]; ur[3][5]=s[8]; ur[3][6]=t[3];
    ur[4][0]=s[4]; ur[4][1]=s[5]; ur[4][2]=s[6]; ur[4][3]=s[7]; ur[4][4]=s[8]; ur[4][5]=s[9]; ur[4][6]=t[4];
    ur[5][0]=s[5]; ur[5][1]=s[6]; ur[5][2]=s[7]; ur[5][3]=s[8]; ur[5][4]=s[9]; ur[5][5]=s[10]; ur[5][6]=t[5];
      
    ur[0][0]=6.0; ur[0][1]=2.90; ur[0][2]=1.75; ur[0][3]=1.16; ur[0][4]=0.81; ur[0][5]=0.59; ur[0][6]=2.67;
    ur[1][0]=2.90; ur[1][1]=1.75; ur[1][2]=1.16; ur[1][3]=0.81; ur[1][4]=0.59; ur[1][5]=0.43; ur[1][6]=1.30;
    ur[2][0]=1.75; ur[2][1]=1.16; ur[2][2]=0.81; ur[2][3]=0.59; ur[2][4]=0.43; ur[2][5]=0.32; ur[2][6]=0.75;
    ur[3][0]=1.16; ur[3][1]=0.81; ur[3][2]=0.59; ur[3][3]=0.43; ur[3][4]=0.32; ur[3][5]=0.24; ur[3][6]=0.47;
    ur[4][0]=0.81; ur[4][1]=0.59; ur[4][2]=0.43; ur[4][3]=0.32; ur[4][4]=0.24; ur[4][5]=0.18; ur[4][6]=0.32;
    ur[5][0]=0.59; ur[5][1]=0.43; ur[5][2]=0.32; ur[5][3]=0.24; ur[5][4]=0.18; ur[5][5]=0.14; ur[5][6]=0.22;
    ...

    Убило реализация степени ввиде exp, и мега инициализация)

    Bogdand, 19 Декабря 2011

    Комментарии (7)
  4. Си / Говнокод #8827

    +104

    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((checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile1)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile2)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile3)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile) >0) )
    
    // новый "быстрый" код, проверяем размеры по файл хэндлам:
    
      FILE* fp1 = fopen(_traceFile1, "r");
      FILE* fp2 = fopen(_traceFile2, "r");
      FILE* fp3 = fopen(_traceFile3, "r");
      FILE* fp4 = fopen(_traceFile, "r");
      
      if((checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp1)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp2)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp3)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp4) >0) )
             setTraceFile(NULL);
    
      fclose(fp1);
      fclose(fp2);
      fclose(fp3);
      fclose(fp4);

    наши бенчмаркеры чего-то там тестировали (на NFS!!!) и нашли что некоторые модули/библиотеки используют stat() вместо fstat()/ftell() для определения размера лог/трейс файлов (для ротации этих файлов). stat() берет как параметр не хэндл, а имя файла и поэтому дороже с точки зрения производительности. в особенности на NFS. ну начальник R&D и постановил: все stat()ы заменить на fstat()/ftell(). сказано - сделано. кусок сверху из модуля который пользуется внешней либой для логов и трейсов и у которого доступа к хэндлам нету. но герои не ищут легких путей: открываем файлы, получаем хэндлы, проверяем оптимальным образом размер файлов по хэндлам, закрываем файлы, гатова!

    Dummy00001, 14 Декабря 2011

    Комментарии (16)
  5. Си / Говнокод #8803

    +139

    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
    /*
     * HttpReceiveRequestEntityBody
     */
    static ULONG __cdecl
    HttpReceiveRequestEntityBody_called(BOOL carry_on,
                                        DWORD ret_addr,
                                        HANDLE ReqQueueHandle,
                                        HTTP_REQUEST_ID RequestId,
                                        ULONG Flags,
                                        PVOID pBuffer,
                                        ULONG BufferLength,
                                        PULONG pBytesReceived,
                                        LPOVERLAPPED pOverlapped)
    {
        if (GetCurrentThreadId() != cur_thread_id && ReqQueueHandle == cur_req_queue)
        {
            carry_on = FALSE;
            return ERROR_IO_PENDING; /* evil evil */
        }
    
        return 0;
    }

    нет что бы что то путнее в комментарии написать :)

    63F45EF45RB65R6VR, 12 Декабря 2011

    Комментарии (6)
  6. Си / Говнокод #8802

    +137

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #define MAKEPTR(p,o) (LPVOID) ( (DWORD)p + (DWORD)o )
    #define WRITE_OPCODE(pCode, x) \
       res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
       if( !res ) return FALSE; \
       pCode = MAKEPTR(pCode,sizeof(x))
    #define WRITE_DWORD(pCode, x) \
       res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
       if( !res ) return FALSE; \
       pCode = MAKEPTR(pCode,sizeof(x))

    макрос "сюрприз" хоть бы назвал яснее типа
    WRITE_OPCODE_AND_RETURN_VAL_IF_FAIL
    но чем так писать лучше уж условие не прятать

    http://ospy.googlecode.com/svn/!svn/bc/2/trunk/Agent/hooking.cpp

    63F45EF45RB65R6VR, 12 Декабря 2011

    Комментарии (7)
  7. Си / Говнокод #8793

    +138

    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
    int my_number = count-1;
    	int addition_size =18;
    	if(sock >= 0)
    	{
    		while(1)
    		{
    			bytes_read = recv(sock, buf, 1024, 0);
    			if(bytes_read <= 0) break;
    			send_buf[0]='r';
    			send_buf[1]='e';
    			send_buf[2]='c';
    			send_buf[3]='e';
    			send_buf[4]='i';
    			send_buf[5]='v';
    			send_buf[6]='e';
    			send_buf[7]='d';
    			send_buf[8]=' ';
    			send_buf[9]='m';
    			send_buf[10]='e';
    			send_buf[11]='s';
    			send_buf[12]='s';
    			send_buf[13]='a';
    			send_buf[14]='g';
    			send_buf[15]='e';
    			send_buf[16]=':';
    			send_buf[17]=' ';
    			
    			for(i=addition_size;i<addition_size+bytes_read;i++)
    				send_buf[i]=buf[i-addition_size];
    			for(i=0;i<count;i++)
    				if(i != my_number)
    					send(active_sockets[i], send_buf, bytes_read+addition_size, 0);
    		}
    		close(sock);
    		for(i=my_number;i<count-1;i++)
    			active_sockets[i]=active_sockets[i+1];
    		count--;
    	}

    наша студентота 3курса :(

    null, 10 Декабря 2011

    Комментарии (19)
  8. Си / Говнокод #8700

    +113

    1. 1
    if (args.first ? 1 : 0 + args.second ? 1 : 0 + args.third ? 1 : 0 > 1)

    vayerx, 01 Декабря 2011

    Комментарии (12)
  9. Си / Говнокод #8696

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    вот так выглядит загрузка DLL у людей, которые не знают про tchar
    
    const char string [] = "right_dll.dll";
    LPCWSTR put = (LPCWSTR) string;
    HINSTANCE my_dll = LoadLibraryEx (put, 0, DONT_RESOLVE_DLL_REFERENCES);

    Kortez, 01 Декабря 2011

    Комментарии (1)
  10. Си / Говнокод #8692

    +106

    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
    #include "stdafx.h"
    #include "math.h"
    #include "stdio.h"
    #include "conio.h"
     
    int main()
    { 
    int p;
    if (p==1 || p==21 || p==31 || p==41 || p==51 || p==61 || p==71 
    || p==81 || p==91   || p==101 || p==121 || p==131 || p==141 || p==151 
    || p==161 || p==171 || p==181 || p==191 || p==201 || p==221 || p==231 
    || p==241 || p==251 || p==261 || p==271 || p==281 || p==291 || p==301
    || p==321 || p==331 || p==341 || p==351 || p==361 || p==371 || p==381
    || p==391 || p==401 || p==421 || p==431 || p==451 || p==461 || p==471 
    || p==481 || p==491 || p==501 || p==521 || p==531 || p==541 || p==551 
    || p==561 || p==571 || p==581 || p==591 || p==601 || p==621 || p==631
    || p==641 || p==651 || p==661 || p==671 || p==681 || p==691 || p==701 
    || p==721 || p==731 || p==741 || p==751 || p==761 || p==771 || p==781 
    || p==791 || p==801 || p==821 || p==831 || p==841 || p==851 || p==861
    || p==871 || p==881 || p==891 || p==901 || p==921 || p==931 || p==941
    || p==951 || p==961 || p==971 || p==981 || p==991 )
    printf("Hruvna\n");
    else 
    {
    if (p>1 && p<5 || p>21 && p<25 || p>31 && p<35 
    || p>41 && p<45 || p>51 && p<55 || p>61 && p<65
    || p>71 && p<75 || p>81 && p<85 || p>91 && p<95
    ||p>101 && p<105 || p>121 && p<125 || p>131 && p<135
    ||p>141 && p<145 || p>151 && p<155 || p>161 && p<165
    ||p>171 && p<175 || p>181 && p<185 || p>191 && p<195
    ||p>201 && p<205 || p>211 && p<215 || p>221 && p<225
    ||p>231 && p<235 || p>241 && p<245 || p>251 && p<255
    ||p>261 && p<265 || p>271 && p<275 || p>281 && p<285
    ||p>291 && p<295 || p>301 && p<305 || p>311 && p<315
    ||p>321 && p<325 || p>331 && p<335 || p>341 && p<345
    ||p>351 && p<355 || p>361 && p<365 || p>371 && p<375
    ||p>381 && p<385 || p>391 && p<395 || p>401 && p<405
    ||p>411 && p<415 || p>421 && p<425 || p>431 && p<435
    ||p>441 && p<445 || p>451 && p<455 || p>461 && p<465
    ||p>471 && p<475 || p>481 && p<485 || p>491 && p<495
    ||p>501 && p<505 || p>511 && p<515 || p>521 && p<525
    ||p>531 && p<535 || p>541 && p<545 || p>551 && p<555
    ||p>561 && p<565 || p>571 && p<575 || p>581 && p<585
    ||p>591 && p<595 || p>601 && p<605 || p>611 && p<615
    ||p>621 && p<625 || p>631 && p<635 || p>641 && p<645
    ||p>651 && p<655 || p>661 && p<665 || p>671 && p<675
    ||p>681 && p<685 || p>691 && p<695 || p>701 && p<705
    ||p>711 && p<715 || p>721 && p<725 || p>731 && p<735
    ||p>741 && p<745 || p>741 && p<745 || p>751 && p<755
    ||p>761 && p<765 || p>771 && p<775 || p>781 && p<785
    ||p>791 && p<795 || p>801 && p<805 || p>811 && p<815
    ||p>821 && p<825 || p>831 && p<835 || p>841 && p<845
    ||p>851 && p<855 || p>861 && p<865 || p>871 && p<875
    ||p>881 && p<885 || p>891 && p<895 || p>901 && p<905
    ||p>911 && p<915 || p>921 && p<925 || p>931 && p<935
    ||p>941 && p<945 || p>951 && p<955 || p>961 && p<965
    ||p>971 && p<975 || p>981 && p<985 || p>991 && p<995)
    printf("Hryvni\n");
    }
     
    if (p>1000)
    printf("Error\n");
    else 
    printf("Hryven\n");
    getch();
    return 0;
    }

    Цитата автора: "Дано натуральное число s (s <= 1000), определяющий денежную сумму (в гривнах). Дать для этого числа название «гривна», «гривны» или «гривен». Составил программу а она не работает" Оригинал здесь: http://www.cyberforum.ru/cpp-beginners/thread258801.html?uri=/cpp-beginners/thread258801.html

    Fenom, 30 Ноября 2011

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