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

    −3

    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
    enum test_result {
        TEST_FAILED = -1,
        TEST_SKIPPED,
        TEST_OK
    }
    
    struct test_node {
        const char *name;
        const char *descr;
        enum test_result (*measurement_test_handler)(void* params);
        void *params;
        enum test_result meas_result;
        enum test_result init_result;
    }

    О духи говнакода наставьте агнца вашего на путь истинный. Написал сие я, запустил и всё пошло по п*изде, по причине невыравненых данных. #pragma pack не помог. Помогло лишь изменение типа enum test_result на uint8_t. Подскажите, дабы не наступать на подобные грабли болей, как кто себя проверяет при работе со структурами?

    MiD, 02 Октября 2015

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

    −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
    #include<stdio.h>
    	main(void){
    	#define   SIZE 10
    	int workers[SIZE] = {0,0,0,0,0,0,0,0,0};
           int frequency[SIZE] = {0,0,0,0,0,0,0,0,0};          		
    	int freq[SIZE]  = {0,0,0,0,0,0,0,0,0};
    	int salary = 200;	
    	int  m = 0, k = 0 ,n = 0, x = 0;
    
    for( k = 1 ; 	k <= SIZE - 1  ; ++k){
       printf("inter summary cash = ");
           scanf("\n%d", &m);
    	  workers[k] = m;
    	  freq[k ]	= (int) salary +  ( workers[k] * 0.01 ) * 9;
    		printf("number index%4d  up salary $%d\n", k  , freq[k]);
    		puts("");
    	}
    
    for(n = 1;n <= SIZE  - 1; n++){
      freq[x]	=  salary +  (workers[n] * 0.01 ) * 9   ;
        if(freq[n] >= 200 && freq[n] < 1000 ){
           ++frequency[(int)  freq[n] / 100  ]  ;
    	 }
    else if ( freq[n] > 1000 ){
    	++frequency[10];
    		 }
    	}		
    		
          for(x = 2;  x <=  SIZE ; x++ ){							
    	printf("$%4d = $%4d 	%d\n",salary, salary + 99,	frequency[x]  );						
                  salary += 100;		
    		}	
    return 0;
    	}

    Задачу по Дейтелам решал.

    tyrin, 27 Сентября 2015

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

    +13

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    Думал я, что меня уже так просто не удивишь, пока не увидел ЭТО!

    gorthauer87, 24 Сентября 2015

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

    +1005

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if(cond) {
          #define INIT_COUNT 1
    } else {
          #define INIT_COUNT 2
    }

    Тот, кто показал мне этот кусочек кода, был очень удивлем тем , что все время выполняется только ветка else.

    refactor, 05 Августа 2015

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

    +1000

    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
    int cutNCountLt3(char *in, char *out, long min) {
        int lt3 = 0;
        char *i = in, *j = in, *k = out;
    
        while (*j && *i) {
            j = i;
            while (*j != ' ' && *j)
                *k++ = *j++;
    
            *k++ = *j;
    
            int len = j - i;
            lt3 += len < 3;
    
            if (len < min)
                *(k -= len + 1) = '\0';
    
            i = j + 1;
        }
    
        return lt3;
    }

    К #9911
    А конкретнее http://govnokod.ru/9911#comment295215

    После нескольких ревизий в комментах, подумал, что наложить здесь будет лучше... Прошу любить, но не жаловать

    Elvenfighter, 03 Августа 2015

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

    +973

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /* */
            int fooBar() {
                /* do something */
    
    /* - */     return NULL;
    /* + */     return 0ULL;
            }

    > src/foobar.c:42:3: warning: return makes integer from pointer without a cast
    > return NULL;

    П О Ч И Н Е Н О

    #17766

    Elvenfighter, 26 Июля 2015

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

    +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
    int do_execve(const char *filename,
    	const char __user *const __user *__argv,
    	const char __user *const __user *__envp,
    	struct pt_regs *regs)
    {
    	struct user_arg_ptr argv = { .ptr.native = __argv };
    	struct user_arg_ptr envp = { .ptr.native = __envp };
        /* exec mt_debug*/
        int ret;
        int retry = 3;
        do{
            ret = do_execve_common(filename, argv, envp, regs);
            printk(KERN_DEBUG"[exec] %s(%d)\n", filename, retry);
        }while( -999 == ret && retry-- > 0);
    	return ret;
    }

    Ядро от MTK. Они логгируют каждый exec на уровне ядра.

    Azq2, 12 Июля 2015

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

    +140

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    int __STRNCMP__(const char s1, const char s2, size_t n)
    {
     for (; n > 0; s1++, s2++, --n)
     if (s1 != s2)
      return (((unsigned char )s1 < (unsigned char )s2) ? -1 : +1);
     else if (*s1 == '\0')
      return 0;
     return 0;
    }

    Зачем нужен такой велосипед?

    Cynicrus, 07 Июля 2015

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

    +141

    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
    void perestanovka(int a[13][13], int n, int m){
    	 int maxim, minim, temp,i;
    	
    	 for (i=0; i<n; i++){
             minim=0;
    	 	 for (int j=1; j<m; j++){
     	  	if(a[i][j]<a[i][minim]) minim=j;
       	  }
    	 temp=a[i][0];
         a[i][0]=a[i][minim];
         a[i][minim]=temp;}
    			 
     	  for (int j=0; i<n; i++){
    	  	  maxim=0;
    	 	 for (int j=1; j<m; j++){
    		 	 if(a[i][j]>a[i][maxim]) maxim=j;
    		 }
    		 temp=a[i][m-1];
             a[i][m-1]=a[i][maxim];
    	     a[i][maxim]=temp; }
     }

    lanior, 04 Июля 2015

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

    +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
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    #include <stdio.h>
    #include <stdlib.h>
    #include <gb/gb.h>
    #include <gb/drawing.h>
    #include <rand.h>
    #define OBJ_EMPTY 0
    #define OBJ_PLAYER 1
    #define OBJ_ENEMY 2
    
    void clearscr(void);
    void waitbuttona(void);
    void initgame(void);
    void setcubemem(UINT8 formerx,UINT8 formery);
    void enemy(void);
    void wingame(void);
    
    int game_field[5][5];
    int cube_x = 2;
    int cube_y = 3;
    int fcx = 0;
    int fcy = 0;
    UINT8 genenemy = 0;
    UINT8 button;
    int pointx = 0;
    int pointy = 0;
    int i = 0;
    int u = 0;
    
    int main()
    {
     initrand(31415);
     printf("Running Cube");
     waitbuttona();
     clearscr();
     initgame();
     while(1)
     {
      clearscr();
      button = joypad();
      fcx = cube_x;
      fcy = cube_y;
      genenemy = rand();
      if(button == J_UP){ cube_x--; setcubemem(fcx,fcy); }
      if(button == J_DOWN){ cube_x++; setcubemem(fcx,fcy);}
      if(button == J_LEFT){ cube_y--; setcubemem(fcx,fcy);}
      if(button == J_RIGHT){ cube_y++; setcubemem(fcx,fcy);}
      box(cube_y*20,cube_x*20,cube_y*20+10,cube_x*20+10,M_FILL);
      if(genenemy % 4 == 0) enemy();
     }
     return(0);
    }
    
    void clearscr(void)
    {
     color(WHITE,WHITE,SOLID);
     box(0,0,GRAPHICS_WIDTH,GRAPHICS_HEIGHT);
     color(BLACK,WHITE,SOLID);
    }
    
    void waitbuttona(void)
    {
     while(1)
     {
      if(joypad() == J_A) break;
     }
    }
    
    void setcubemem(UINT8 formerx,UINT8 formery)
    {
     game_field[formerx][formery] = 0;
     game_field[cube_x][cube_y] = OBJ_PLAYER;
    }
    
    
    void initgame(void)
    {
     game_field[2][3] = OBJ_PLAYER;
    }
    
    void enemy(void)
    {
      initrand(2);
      game_field[rand()][rand()] = OBJ_ENEMY;
      circle(3*20,1*20,20,1);
      if(game_field[cube_x-2][cube_y-2] == OBJ_ENEMY || game_field[cube_x-1][cube_y-1] == OBJ_ENEMY || game_field[cube_x][cube_y] == OBJ_ENEMY || game_field[cube_x+1][cube_y+1] == OBJ_ENEMY || game_field[cube_x+2][cube_y+2] == OBJ_ENEMY)
      {
       wingame();
      }
    }
    
    
    void wingame(void)
    {
     clearscr();
     gotogxy(40,50);
     gprintf("You've won!");
     delay(1000);
     reset();
    }

    Игра на Gameboy Classic(GBDK,написана мною). Без комментариев.

    fedor2612, 28 Июня 2015

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