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

    +2

    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<math.h>
    
    int const n = 50, n1 = 40, m = n / n1;
    double f1(double t, double x, double y, double z);
    double f2(double t, double x, double y, double z);
    double f3(double t, double x, double y, double z);
    
    int main() {
    	int i, k, ll;
    	double k11, k12, k13, k21, k22, k23, k31, k32, k33, k14, k24, k34;
    	double x, y, z, max;
    	double res[12][n1 + 1], h, a, b, t, pi, xn, yn, zn;
    	max = 1000.0; x = 3.0;
    	y = -2.0; z = -3.0;
    	a = 0.0; b = 1.0;
    	h = (b - a) / double(n);
    
    	k = 0; t = a;
    	res[0][0] = t; res[1][0] = x;
    	res[2][0] = y;
    	res[3][0] = z;
    	for (i = 1; i <= n; i++) {
    		k11 = f1(t, x, y, z);
    		k21 = f2(t, x, y, z);
    		k31 = f3(t, x, y, z);
    		k12 = f1(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
    		k22 = f2(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
    		k32 = f3(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
    		k13 = f1(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
    		k23 = f2(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
    		k33 = f3(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
    		k14 = f1(t + h, x + h*k13, y + h*k23, z + h*k33);
    		k24 = f2(t + h, x + h*k13, y + h*k23, z + h*k33);
    		k34 = f3(t + h, x + h*k13, y + h*k23, z + h*k33);
    		x = x + h*(k11 + 2.0*(k12 + k13) + k14) / 6.0;
    		y = y + h*(k21 + 2.0*(k22 + k23) + k24) / 6.0;
    		z = z + h*(k31 + 2.0*(k32 + k33) + k34) / 6.0;
    		t = t + h;
    		if (i%m == 0) {
    			k = k + 1;
    			res[0][k] = t;
    			res[1][k] = x;
    			res[2][k] = y;
    			res[3][k] = z;
    			res[4][k] = exp(t) + exp(2.0*t) + exp(-t);
    			res[5][k] = exp(t) - 3.0*exp(-t);
    			res[6][k] = exp(t) + exp(2.0*t) - 5.0*exp(-t);
    			res[7][k] = res[4][k] - res[1][k];
    			res[8][k] = res[5][k] - res[2][k];
    			res[9][k] = res[6][k] - res[3][k];
    		} if (res[7][k] < 0.0) {
    			res[7][k] = -res[7][k];
    		}
    		else if (res[8][k] < 0.0) {
    			res[8][k] = -res[8][k];
    		}
    		else if (res[9][k] < 0.0) {
    			res[9][k] = -res[9][k];
    		}
    		res[10][k] = res[7][k] + res[8][k] + res[9][k];
    	}
    
    	ll = k;
    	printf("k=%d\n", ll);
    	for (i = 0; i <= ll; i++) {
    		if (res[10][i] < max) max = res[10][i];
    	} for (i = 0; i <= n1; i++) {
    		printf("t=%.16lf\n", res[0][i]);
    		printf("x=%.16lf x(exact)=%.16lf delta=%.16lf\n", res[1][k], res[4][k], res[1][k] - res[4][k]);
    		printf("y=%.16lf y(exact)=%.16lf delta=%.16lf \n", res[2][k], res[5][k], res[2][k] - res[5][k]);
    		printf("z=%.16lf z(exact)=%.16lf delta=%.16lf \n", res[3][k], res[6][k], res[3][k] - res[6][k]);
    	}
    	printf("result:\n");
    	printf("t=%.16lf\n", res[0][n1]);
    	printf("x=%.16lf x(exact)=%.16lf delta=%.16lf\n", res[1][n1], res[4][n1], res[1][n1] - res[4][n1]);
    	printf("y=%.16lf y(exact)=%.16lf delta=%.16lf \n", res[2][n1], res[5][n1], res[2][n1] - res[5][n1]);
    	printf("z=%.16lf z(exact)=%.16lf delta=%.16lf \n", res[3][n1], res[6][n1], res[3][n1] - res[6][n1]);
    	printf("max norma|x|1=%.16lf \n", max / 3.0);
    
    	system("pause");
    
    	return 0;
    }
    
    double f1(double t, double x, double y, double z)
    {
    	return x + z - y;
    }
    
    double f2(double t, double x, double y, double z)
    {
    	return x + y - z;
    }
    
    double f3(double t, double x, double y, double z)
    {
    	return 2.0*x - y;
    }

    Кандидат физико-математических наук сделал методичку по предмету "Моделирование систем". Это он так описал алгоритм решения системы ОДУ методом Рунге-Кутты.

    mazazadah, 22 Сентября 2017

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

    +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
    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
    // https://github.com/vk-com/kphp-kdb/blob/ce6dead5b3345f4b38487cc9e45d55ced3dd7139/bayes/bayes-data.c#L569
      for (i = j = 0; v[i]; i++) {
        f[j] = i;
        if (v[i + 1] == '#' && (v[i] == '&' || v[i] == '$')) {
          int r = 0, ti = i;
          if (v[i + 2] != 'x') {
            for (i += 2; v[i] != ';' && v[i]; i++) {
              if ('0' <= v[i] && v[i] <= '9') {
                r = r * 10 + v[i] - '0';
              } else {
                break;
              }
            }
          } else {
            for (i += 3; v[i] != ';' && v[i]; i++) {
              if (('0' <= v[i] && v[i] <= '9') ||
                  ('a' <= v[i] && v[i] <= 'f') ||
                  ('A' <= v[i] && v[i] <= 'F')) {
                r = r * 16;
                if (v[i] <= '9') {
                  r += v[i] - '0';
                } else if (v[i] <= 'F') {
                  r += v[i] - 'A' + 10;
                } else {
                  r += v[i] - 'a' + 10;
                }
              } else {
                break;
              }
            }
          }
          if (r == 0) {
            bad[j] = 0;
            pv[j++] = v[i = ti];
          } else {
            bad[j] = 1;
            pv[j++] = r;
            if (v[i] != ';') {
              i--;
            }
          }
        } else if (v[i] == '%' && '0' <= v[i + 1] && v[i + 1] <= '7' &&
                                (('0' <= v[i + 2] && v[i + 2] <= '9') ||
                                 ('a' <= v[i + 2] && v[i + 2] <= 'f') ||
                                 ('A' <= v[i + 2] && v[i + 2] <= 'F'))) {
          int r = (v[i + 1] - '0') * 16;
          if (v[i + 2] <= '9') {
            r += v[i + 2] - '0';
          } else if (v[i + 2] <= 'F') {
            r += v[i + 2] - 'A' + 10;
          } else {
            r += v[i + 2] - 'a' + 10;
          }
          i += 2;
          if (r != ':' && r != '/' && r != '=' && r != '?' && r != '&' && r != '+') {
            bad[j] = 1;
          } else {
            bad[j] = 0;
          }
          pv[j++] = r;
        } else {
          bad[j] = 0;
          pv[j++] = v[i];
        }
      }
      f[j] = i;
      pv[j] = 0;
    
      for (i = 0; i < j; i++) {
        if ('A' <= pv[i] && pv[i] <= 'Z') {
          pv[i] = pv[i] - 'A' + 'a';
          bad[i] += 2;
        }
      }

    Очередной ебаный пиздец из kPHP
    В предыдущих сериях:
    http://govnokod.ru/19842
    http://govnokod.ru/15406

    j123123, 22 Сентября 2017

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

    −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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
      FILE *f = fopen(argv[1], "r");
      if(f == NULL)
      {
        perror("open");
        return 1;
      }
      char str[8];
      while( fgets(str, 9, f) != NULL)
      {
        if(str[0] == '\n') continue;
        printf("%s", str);
      }
      fclose(f);
      
      return 0;
    }

    вот так на си тяжко работать со строками

    MasterGovnokodinga, 03 Сентября 2017

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

    −2

    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
    #include <stdio.h>
    #include <stdlib.h>
    
    char *pins[1][1777];
    
    int load(char *name)
    {
    	FILE *f;
    	f = fopen(name, "r");
    	if(f == NULL) return -1;
    	char str[8];
    	char *tmp;
    	int i=0;
    	while( fgets(str, 9, f) != NULL)
    	{
    		if(str[0] == '\n') continue;
    		tmp = str;
    		pins[0][i] = tmp;
    		i++;
    	}
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	if(argc != 3) { printf("Usage: %s [file] [mac]\n", argv[0]); return 1; }
    	if(load(argv[1]) == -1) {
    		printf("Error load file\n"); return 1;
    	}
    	
    	char cmd[100];
    	for(int i=0; i<1777; i++)
    	{
    		sprintf(cmd, "wpa_cli wps_reg %s %s", argv[2], pins[0][i]);
    		printf("%s\n", cmd);
    	}
    	
    	return 0;
    }

    Эта программа хачит вайфай по впс и пиздец какая легкая
    Но я ебал её за то что она не тормозит когда пин подошел!

    MasterGovnokodinga, 03 Сентября 2017

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <stdio.h>
    #define A(t,o,w,v) t=(t&~(((1<<w)-1)<<o))|(((t&(((1<<w)-1)<<o))>>o)+(v)<<o)
    int main()
    {
        unsigned long long c = 1451412270569574000, r = 0;
        for (int i = 0; i < 32; i++) {
            int o = (c >>(62-i*2))&3,b=o&1?o&2?putchar('a'+(r&63)),r|=64:(r=((r&63)<<7)|((r &63)<<13)):o&2?r&0x7e000?A(r,13,6,-1),i-=((c>>(60-i*2))&3)+2:(r+=(r&0x1f80)>>7,i++):(A(r,0,6,((c>>(60-i*2))&3)+1-!!(r&64)*(r&63)),r&=~64,i++);
        }
        return 0;
    }

    Мне вчера было нехуй делать
    https://ideone.com/x0EHUj

    cykablyad, 02 Сентября 2017

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

    −17

    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
    #include <stdio.h>
    #include <math.h>
    
    float love (float I, float l) {
        return pow(l,12)-1.875*pow(l,11)+6.0*pow(I,2)*pow(l,10)-4.9921875*I*pow(l,10)+2.585311889648438*pow(l,10)-9.375*pow(I,2)*pow(l,9)+7.7939453125*I*pow(l,9)-2.358575820922852*pow(l,9)+15.0*pow(I,4)*pow(l,8)-24.9609375*pow(I,3)*pow(l,8)+21.97471618652344*pow(I,2)*pow(l,8)-9.631240367889404*I*pow(l,8)+1.777470515808091*pow(l,8)-18.75*pow(I,4)*pow(l,7)+31.17578125*pow(I,3)*pow(l,7)-21.94354248046875*pow(I,2)*pow(l,7)+7.460306525230408*I*pow(l,7)-1.035190926311771*pow(l,7)+20.0*pow(I,6)*pow(l,6)-49.921875*pow(I,5)*pow(l,6)+62.04574584960938*pow(I,4)*pow(l,6)-45.61122179031372*pow(I,3)*pow(l,6)+20.07440712489188*pow(I,2)*pow(l,6)-4.903620561284697*I*pow(l,6)+0.5161124694232*pow(l,6)-18.75*pow(I,6)*pow(l,5)+46.763671875*pow(I,5)*pow(l,5)-51.67917251586914*pow(I,4)*pow(l,5)+32.04117125272751*pow(I,3)*pow(l,5)-11.6713294716028*pow(I,2)*pow(l,5)+2.355260139334632*I*pow(l,5)-0.20501630121111*pow(l,5)+15.0*pow(I,8)*pow(l,4)-49.921875*pow(I,7)*pow(l,4)+80.14205932617188*pow(I,6)*pow(l,4)-79.04622316360474*pow(I,5)*pow(l,4)+51.30156413791701*pow(I,4)*pow(l,4)-22.09226815116017*pow(I,3)*pow(l,4)+6.102695024577312*pow(I,2)*pow(l,4)-0.98242835877583*I*pow(l,4)+0.07029630907693*pow(l,4)-9.375*pow(I,8)*pow(l,3)+31.17578125*pow(I,7)*pow(l,3)-46.96202087402344*pow(I,6)*pow(l,3)+41.70142292976379*pow(I,5)*pow(l,3)-23.80186113572563*pow(I,4)*pow(l,3)+8.917726330775167*pow(I,3)*pow(l,3)-2.136639154377085*pow(I,2)*pow(l,3)+0.29864859229457*I*pow(l,3)-0.018605983912568*pow(l,3)+6.0*pow(I,10)*pow(l,2)-24.9609375*pow(I,9)*pow(l,2)+49.11918640136719*pow(I,8)*pow(l,2)-59.78374242782593*pow(I,7)*pow(l,2)+49.48978896439076*pow(I,6)*pow(l,2)-28.93158598494665*pow(I,5)*pow(l,2)+12.03202378944777*pow(I,4)*pow(l,2)-3.49998137399697*pow(I,3)*pow(l,2)+0.67922924650719*pow(I,2)*pow(l,2)-0.079197878338692*I*pow(l,2)+0.004203914137248*pow(l,2)-1.875*pow(I,10)*l+7.7939453125*pow(I,9)*l-14.8678150177002*pow(I,8)*l+17.12055820226669*pow(I,7)*l-13.1657225904346*pow(I,6)*l+7.058370449499989*pow(I,5)*l-2.669451770776955*pow(I,4)*l+0.70266515170761*pow(I,3)*l-0.12309933971658*pow(I,2)*l+0.012949812548299*I*l-6.206283953776933E-4*l+1.0*pow(I,12)-4.9921875*pow(I,11)+11.63346862792969*pow(I,10)-16.71750068664551*pow(I,9)+16.48516143555753*pow(I,8)-11.74293839507118*pow(I,7)+6.19175129714019*pow(I,6)-2.433391202903175*pow(I,5)+0.70703445950914*pow(I,4)-0.14803650408631*pow(I,3)+0.021189602823114*pow(I,2)-0.001860653826892*I+7.575185971055368E-5 < 1E-15 || pow(l,10)-5.0*pow(l,9)+5.0*pow(I,2)*pow(l,8)-2.90625*I*pow(l,8)+11.78536987304688*pow(l,8)-20.0*pow(I,2)*pow(l,7)+11.6494140625*I*pow(l,7)-17.14798545837402*pow(l,7)+10.0*pow(I,4)*pow(l,6)-11.625*pow(I,3)*pow(l,6)+40.29388427734375*pow(I,2)*pow(l,6)-21.55665040016174*I*pow(l,6)+16.99577952199616*pow(l,6)-30.0*pow(I,4)*pow(l,5)+34.9482421875*pow(I,3)*pow(l,5)-50.94610023498535*pow(I,2)*pow(l,5)+23.88467472791672*I*pow(l,5)-11.9628191064985*pow(l,5)+10.0*pow(I,6)*pow(l,4)-17.4375*pow(I,5)*pow(l,4)+50.16943359375*pow(I,4)*pow(l,4)-48.70983290672302*pow(I,3)*pow(l,4)+42.97533737192862*pow(I,2)*pow(l,4)-17.25546950536591*I*pow(l,4)+6.04749635858191*pow(l,4)-20.0*pow(I,6)*pow(l,3)+34.9482421875*pow(I,5)*pow(l,3)-50.44824409484863*pow(I,4)*pow(l,3)+39.17684853076935*pow(I,3)*pow(l,3)-24.34328862949042*pow(I,2)*pow(l,3)+8.299056958717301*I*pow(l,3)-2.166128431830096*pow(l,3)+5.0*pow(I,8)*pow(l,2)-11.625*pow(I,7)*pow(l,2)+26.59869384765625*pow(I,6)*pow(l,2)-32.74971461296082*pow(I,5)*pow(l,2)+30.75699374894612*pow(I,4)*pow(l,2)-18.95482897813054*pow(I,3)*pow(l,2)+8.95435221319056*pow(I,2)*pow(l,2)-2.588868248221219*I*pow(l,2)+0.5257354735823*pow(l,2)-5.0*pow(I,8)*l+11.6494140625*pow(I,7)*l-16.65012931823731*pow(I,6)*l+15.29217380285263*pow(I,5)*l-10.51018774471595*pow(I,4)*l+5.180867148931611*pow(I,3)*l-1.941813316855168*pow(I,2)*l+0.47735353639502*I*l-0.077970960441102*l+1.0*pow(I,10)-2.90625*pow(I,9)+4.937774658203125*pow(I,8)-5.596532106399536*pow(I,7)+4.777435899013653*pow(I,6)-3.106810036970273*pow(I,5)+1.591604432319357*pow(I,4)-0.62478458589189*pow(I,3)+0.18929881373474*pow(I,2)-0.039649136270068*I+0.005350459981283 < 1E-15 || pow(l,8)-6.25*pow(l,7)+4.0*pow(I,2)*pow(l,6)-3.421875*I*pow(l,6)+17.80441284179688*pow(l,6)-18.75*pow(I,2)*pow(l,5)+16.046875*I*pow(l,5)-30.05508041381836*pow(l,5)+6.0*pow(I,4)*pow(l,4)-10.265625*pow(I,3)*pow(l,4)+43.19027709960938*pow(I,2)*pow(l,4)-33.21647453308106*I*pow(l,4)+32.82648727321066*pow(l,4)-18.75*pow(I,4)*pow(l,3)+32.09375*pow(I,3)*pow(l,3)-58.69374847412109*pow(I,2)*pow(l,3)+38.5006719827652*I*pow(l,3)-23.74583693197928*pow(l,3)+4.0*pow(I,6)*pow(l,2)-10.265625*pow(I,5)*pow(l,2)+32.96731567382813*pow(I,4)*pow(l,2)-43.91474056243897*pow(I,3)*pow(l,2)+48.47694909991697*pow(I,2)*pow(l,2)-26.33819586417303*I*pow(l,2)+11.12129622866344*pow(l,2)-6.25*pow(I,6)*l+16.046875*pow(I,5)*l-28.63866806030273*pow(I,4)*l+29.44533658027649*pow(I,3)*l-22.7191906881053*pow(I,2)*l+10.09911390075604*I*l-3.090911028218697*l+1.0*pow(I,8)-3.421875*pow(I,7)+7.581451416015625*pow(I,6)-10.69826602935791*pow(I,5)+11.34971928992309*pow(I,4)-8.510083455770655*pow(I,3)+4.787326839222217*pow(I,2)-1.713611032709814*I+0.39256049070024 < 1E-12;
    }
    
    int main() {
        char bormand = 64, HACTEHbKA = 63, LOVE[16] = {}, hell = !LOVE, heaven = HACTEHbKA + bormand;
        float HEAVEN = 2 * heaven + 2.;
        
        for (bormand = hell; bormand < heaven; bormand ++)
            for (HACTEHbKA = hell; HACTEHbKA < heaven; HACTEHbKA ++)
                if (love(bormand / HEAVEN, HACTEHbKA / sqrt(HEAVEN)) > HACTEHbKA / (float) bormand)
                    LOVE[HACTEHbKA] = bormand;
        
        puts(LOVE);
    }

    HACTEHbKA, 01 Сентября 2017

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

    −15

    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
    char *cat2(char *str1, char *str2)
    {
      int len;
      char *ret;
    
      /* malloc new string */
      len = strlen(str1) + strlen(str2) + 1;
      ret = (char *) malloc(len*sizeof(char));
    
      /* copy the strings */
      strcpy(ret, str1);
      strcat(ret, str2);
    
      /* free old strings */
      free(str1);
      free(str2);
    
      return ret;
    }
    
    char *cat3(char *str1, char *str2, char *str3)
    {
      return cat2(cat2(str1, str2), str3);
    }
    
    char *cat4(char *str1, char *str2, char *str3, char *str4)
    {
      return cat2(cat2(str1, str2), cat2(str3, str4));
    }
    
    char *cat5(char *str1, char *str2, char *str3, char *str4,
    	   char *str5)
    {
      return cat3(cat2(str1, str2), cat2(str3, str4), str5);
    }
    
    char *cat6(char *str1, char *str2, char *str3, char *str4,
    	   char *str5, char *str6)
    {
      return cat3(cat2(str1, str2), cat2(str3, str4), cat2(str5, str6));
    }
    
    char *cat7(char *str1, char *str2, char *str3, char *str4,
    	   char *str5, char *str6, char *str7)
    {
      return cat4(cat2(str1, str2), cat2(str3, str4), cat2(str5, str6), str7);
    }
    
    char *cat8(char *str1, char *str2, char *str3, char *str4,
    	   char *str5, char *str6, char *str7, char *str8)
    {
      return cat4(cat2(str1, str2), cat2(str3, str4),
    	      cat2(str5, str6), cat2(str7, str8));
    }
    
    char *cat9(char *str1, char *str2, char *str3, char *str4,
    	   char *str5, char *str6, char *str7, char *str8,
    	   char *str9)
    {
      return cat5(cat2(str1, str2), cat2(str3, str4), cat2(str5, str6),
    	      cat2(str7, str8), str9);
    }

    d_fomenok, 31 Августа 2017

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

    +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
    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
    // https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/code/c/1.1%EF%BC%9A%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.c
    
    #include <stdio.h>
    #include <string.h>
    //字符串旋转问题,例如abcdef 左旋2位 变成 cdefab
    
    //暴力移位法
    void leftShift1(char * arr, int n)
    {
        size_t tmpLen = strlen(arr);
        char tmpChar;
        int i, j;
        if (n >= 0)
        {
            for (i = 0; i < n; i++)
            {
                tmpChar = *arr;
                for (j = 0; j < tmpLen - 1; j++)
                {
                    *(arr + j) = *(arr + j + 1);
                }
                *(arr + tmpLen - 1) = tmpChar;
            }
        }
        else
        {
            for (i = 0; i < -n; i++)
            {
                tmpChar = *(arr + tmpLen - 1);
                for (j = tmpLen - 1; j > 0; j--)
                {
                    *(arr + j) = *(arr + j - 1);
                }
                *arr = tmpChar;
            }
        }
    }

    Копаясь в гитхабе, нашел я тут The Art Of Programming By July, написанный каким-то китайцем.
    https://github.com/julycoding/The-Art-Of-Programming-By-July

    j123123, 18 Августа 2017

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

    +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
    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
    static inline void set0b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] &= ~(1ULL << (at % 64));
    }
    
    static inline  void set1b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] |= 1ULL << (at % 64);
    }
    
    static inline void inv_b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] ^= 1ULL << (at % 64);
    }
    
    
    static inline uint8_t find_empt_pos (const uint64_t bm[static 4])
    {
      if (bm[0] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[0]) + 64 * 0;  // __builtin_ctzll - https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
      }
      if (bm[1] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[1]) + 64 * 1;
      }
      if (bm[2] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[2]) + 64 * 2;
      }
      if (bm[3] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[3]) + 64 * 3;
      }
      fprintf(stderr, "ERROR! No empty space!\n");
      exit (-1);
    }
    
    static inline uint8_t allocate_ll (uint64_t bm[static 4])
    {
      uint8_t tmp = find_empt_pos (bm);
      set1b (tmp, bm);
      return tmp;
    }
    
    static inline void inject(const uint8_t prev_p, const uint8_t next_p, const uint8_t at, struct ll_data a[static 256])
    {
      a[next_p].ll.prev = at;
      a[prev_p].ll.next = at;
    
      a[at].ll.prev = prev_p;
      a[at].ll.next = next_p;
    }
    
    static inline void remove_betw(const uint8_t prev_p, const uint8_t next_p, struct ll_data a[static 256])
    {
      a[prev_p].ll.next = next_p;
      a[next_p].ll.prev = prev_p;
    }
    
    static inline void remove_at(const uint8_t at, struct ll_data a[static 256], uint64_t bm[static 4])
    {
      uint8_t prev_t = a[at].ll.prev;
      uint8_t next_t = a[at].ll.next;
    
      set0b (at, bm);
    
      a[at].ll.prev = next_t;
      a[at].ll.next = prev_t;
    }
    
    
    void add_elem_next (struct ll_all *a, const uint8_t elm, const int value)
    {
      uint8_t pos = allocate_ll (a->bm);
      inject(elm, a->arr[elm].ll.next, pos, a->arr);
      set_elm (pos, value, a->arr);
    }
    
    void add_elem_prev (struct ll_all *a, const uint8_t elm, const int value)
    {
      uint8_t pos = allocate_ll (a->bm);
      inject(a->arr[elm].ll.prev, elm, pos, a->arr);
      a->arr[pos].data = value;
    }
    
    void rem_elem_next (struct ll_all *a, const uint8_t elm)
    {
      set0b (a->arr[elm].ll.next, a->bm);
      remove_betw (elm, a->arr[a->arr[elm].ll.next].ll.next, a->arr);
    }
    
    void rem_elem_prev (struct ll_all *a, const uint8_t elm)
    {
      set0b (a->arr[elm].ll.next, a->bm);
      remove_betw (a->arr[a->arr[elm].ll.prev].ll.prev, elm, a->arr);
    }

    Тру-царская неанскилльная реализация двусвязного списка внутри массива.
    К сожалению, весь код не помещается, см https://wandbox.org/permlink/Ky8fnuqyE0Ahxftm

    j123123, 18 Августа 2017

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

    +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
    // GetBlockingMode возвращает: 1 - nonblocking | 0 - blocking | -1 - error | -2 - timeout reseted!
    
    int GetBlockingMode(int Sock)
    {
    	int iSize, iValOld, iValNew, retgso;
    	iSize = sizeof(iValOld);
    	retgso = getsockopt(Sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&iValOld, &iSize); // Save current timeout value
    	if (retgso == SOCKET_ERROR) return (-1);
    	iValNew = 1;
    	retgso = setsockopt(Sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&iValNew, iSize); // Set new timeout to 1 ms
    	if (retgso == SOCKET_ERROR) return (-1);
    	
    	// Ok! Try read 0 bytes.
    	char buf[1]; // 1 - why not :)
    	int retrcv = recv(Sock, buf, 0, MSG_OOB); // try read MSG_OOB
    	int werr = WSAGetLastError();
    	
    	retgso = setsockopt(Sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&iValOld, iSize); // Set timeout to initial value
    	if (retgso == SOCKET_ERROR) return (-2);
    
    	if (werr == WSAENOTCONN) return (-1);
    	if (werr == WSAEWOULDBLOCK) return 1;
    	return 0;
    }

    cykablyad, 17 Августа 2017

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