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

    +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
    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
    /* В комментариях то что хотел Автор от своей программы 	*/
    /* Радует однако, что она компилируется и во время		*/
    /* работы не выдает ни каких ошибок				*/
    /* Порядок операторов сохранен.					*/
    /* Тот же код только вырезанно "лишнее".			*/
    
    /* Эта ф-ия находится в другом cpp файле */
    float f(float x, float y)
    {
    	/* Тут что-то происходит с x и y */
    	return x, y;
    }
    
    void main(void)
    {
    	float **m;
    
    	/* ... */
    	float f(float x, float y);
    	/* ... */
    
    	/* Задается N					*/
    	float N;
    	/* ... */
    
    	/* Выделяется память под массив m[N][2] 	*/
    	m = (float **)malloc(sizeof(float*));
    	for(i = 0; i < N; i++)
    	{
    		m[i] = (float*)malloc(sizeof(float*) * 2);
    	}
    
    	/* ... */
    	for(i = 0; i < N; i++)
    	{
    		/* Массив заполняется числами						*/
    		/* В m[i][] должны быть записанны числа x, y измененый ф-ей f 		*/
    		/* т. е.	m[i][0] = xf						*/
    		/*		m[i][1] = yf						*/
    		for(j = 0; j < 2; j++)
    		{
    			m[i][j] = f(x, y);
    			/* ... */
    		}
    	}
    
    	/* ... */
    }

    dreesto, 28 Ноября 2012

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

    +128

    1. 1
    "%s[@%s='%s']"

    Аццкий смайлик! Сборка запроса XPath для поиска элементов в XML DOM по значениям, переданным из другой функции.

    sprintf(str,"%s[@%s='%s']",elemPath,attrName,value);

    GoblinAlchemist, 27 Ноября 2012

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

    +130

    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
    #include <stdlib.h>
     
    struct no_matter
    {
        int some_field;
    };
     
    struct matter *do_stuff(void)
    {
        struct no_matter *m = calloc(1, sizeof *m);
        return m;
    }
     
    int main(void)
    {
        struct no_matter *m = do_stuff();
        free(m);
        return 0;
    }

    Сегодня выполняю роль гумна. В сишке можно возвращать указатель на непонятно откуда взявшуюся необъявленную ранее структуру и код будет компиляться (ладно хоть пишет невнятные ворнинги, только благодаря им нашёл опечатку в одной букве в имени структуры в рабочем коде). Понятно, что все указатели одинаково числа, но всё равно как-то некрасиво. Хацкелисты негодуэ, даёшь монаду Ptr

    http://ideone.com/3SABHW

    roman-kashitsyn, 27 Ноября 2012

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

    +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
    #include<stdio.h>
    #include<math.h>
     
    int main()
    {
    long long a1,a2,a3,a4,t,p,l,m1,m,d1,d2,d3,d4,c1,c2,c3,c4,n,r;
    double po;
     
    m=1000000006;
    scanf("%lld",&t);
    while(t--)
         {scanf("%lld",&n);
         a1=1;a2=1;a3=1;a4=0;
         d1=1;d2=0;d3=0;d4=1;
         
         p=n-2;
    while(p>0)
         {    if(p%2!=0)
            { c1=((d1*a1)%m+(d3*a3)%m);
              c2=((d1*a2)%m+(d2*a4)%m);
              c3=((d3*a1)%m+(d4*a3)%m);
              c4=((d3*a2)%m+(d4*a4)%m);
              d1=c1;d2=c2;d3=c3;d4=c4;
            }
              c1=((a1*a1)%m+(a2*a3)%m);
              c2=((a1*a2)%m+(a2*a4)%m);
              c3=((a3*a1)%m+(a4*a3)%m);
              c4=((a3*a2)%m+(a4*a4)%m);
              a1=c1;a2=c2;a3=c3;a4=c4;
              p=p/2;
         }
     l=((d1*1)%m+(d2*1)%m)%m;m1=((d3*1)%m+(d4*1)%m)%m;
     
    po=pow(2,l);
    r=llrintl(po)%(m+1);
     
     
    printf("%lld\n",r);
    }
    return 0;
       }

    Fai, 26 Ноября 2012

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

    +133

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Коллега занимается инновациями в Сколково, так они там изобрели операцию NOT на континууме.

    serpinski, 24 Ноября 2012

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

    +140

    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 <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 100
    int main()
    {
    	do
    	{
    		int i,f,kol,z=1;
    		char s1[MAX],s2[MAX],*ch=" .!?",*s3[MAX];
    		fflush(stdin);
    		do{puts("Vvedite vash text.");
    		gets(s1);}while((s1[0]==' ')||(s1[1]=='\n')||(s1[0]=='\0'));
    		strcpy(s2,s1);
    		s3[0]=strtok(s2,ch);
    		for(i=1;s3[i]=strtok(NULL,ch);i++)
    		    {
    		    }
    		f=i;
    		puts("Otsortirovannue slova.");
    		for(i=0,kol=0;i<f;i++)
    			{
    				if((*(s3[i])=='A')||(*(s3[i])=='a'))
    							{
    								printf("%s ",s3[i]);
    								kol++;
    								z=0;
    				            }
    			}
    		if(z)puts("slov nety. =(");
    		printf("\nKollichestvo slov na 'A' ili 'a': %d",kol);
    		puts("\nvash text.");
    		puts(s1);
    		printf("\n");
    		printf("dlya povtora nathmite lubyi klavishu. dlya vuhoda ESC.\n\n");
    	}
    	while(getch()!=27);
    }

    Моя первая работа) Оцените) Правда я не помню что она делает)

    RaSta-Lion, 21 Ноября 2012

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

    +137

    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
    /* ... */
        HWND    mywnd   = NULL;
    /* ... */
    
    #ifdef WIN32
        mywnd = GetForegroundWindow();
        if(GetWindowLong(mywnd, GWL_WNDPROC)) {
            for(i = 1; i < argc; i++) {
                if(verbose_options(argv[i]) < 0) break;
                switch(argv[i][1]) {
                    case 'f': i++;  break;
                    case 'F': i++;  break;
                    case 'L': i++;  break;
                    case 'a': i++;  break;
                    default: break;
                }
            }
            if(i > argc) i = argc;
            i = 3 - (argc - i);
            if(i > 0) {
                fprintf(stderr,
                    "- GUI mode activated, remember that the tool works also from command-line\n"
                    "  where are available various options like folder scanning, filters and so on\n"
                    "\n");
                /* дальше пляски с извлечением параметров из argv */
            }
        }
    #endif

    Наткнулся на утилиту, которая умеет отличать запуск из гуев и из консоли. Полез глядеть, как сделано, а там вот такие чудеса.

    PascalGovno, 20 Ноября 2012

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

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    //void wyslij(int pin, char mode[] = "open") { //было
    void wyslij(int pin, int mode) { //стало
      if (pin != -1)
      {
        if (mode == "open")
        {
    
    //...
    
      else if ( (mode == "touch") && ( (error != 1) || (olej_error == 1) ) )

    Кусок дипломной работы польского студента, код для ардуино. Выцарапано отсюда: http://vimeo.com/47656204, примерно с 1:15.

    Xom94ok, 17 Ноября 2012

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

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #define LengthOfArrayInternal(a)(sizeof(a)/sizeof(a[0]))
     
    #define is_array(x) _Generic((x), typeof((x)[0])[LengthOfArrayInternal(x)]:1, default: 0)
     
    #define COMPILE_TIME_ASSERT(expr) char constraint[expr]
     
    #define length_of_array(a) ({COMPILE_TIME_ASSERT(is_array(a)); LengthOfArrayInternal(a)})

    Определение длины массива. gcc и с11 only.
    Говно как известно рождается в споре:
    http://govnokod.ru/12108#comment160631

    LispGovno, 15 Ноября 2012

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

    +136

    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
    typedef char C;typedef long I;
    typedef struct a{I t,r,d[3],p[2];}*A;
    #define P printf
    #define R return
    #define V1(f) A f(w)A w;
    #define V2(f) A f(a,w)A a,w;
    #define DO(n,x) {I i=0,_n=(n);for(;i<_n;++i){x;}}
    I *ma(n){R(I*)malloc(n*4);}mv(d,s,n)I *d,*s;{DO(n,d[i]=s[i]);}
    tr(r,d)I *d;{I z=1;DO(r,z=z*d[i]);R z;}
    A ga(t,r,d)I *d;{A z=(A)ma(5+tr(r,d));z->t=t,z->r=r,mv(z->d,d,r);R z;}
    V1(iota){I n=*w->p;A z=ga(0,1,&n);DO(n,z->p[i]=i);R z;}
    V2(plus){I r=w->r,*d=w->d,n=tr(r,d);A z=ga(0,r,d);
     DO(n,z->p[i]=a->p[i]+w->p[i]);R z;}
    V2(from){I r=w->r-1,*d=w->d+1,n=tr(r,d);
     A z=ga(w->t,r,d);mv(z->p,w->p+(n**a->p),n);R z;}
    V1(box){A z=ga(1,0,0);*z->p=(I)w;R z;}
    V2(cat){I an=tr(a->r,a->d),wn=tr(w->r,w->d),n=an+wn;
     A z=ga(w->t,1,&n);mv(z->p,a->p,an);mv(z->p+an,w->p,wn);R z;}
    V2(find){}
    V2(rsh){I r=a->r?*a->d:1,n=tr(r,a->p),wn=tr(w->r,w->d);
     A z=ga(w->t,r,a->p);mv(z->p,w->p,wn=n>wn?wn:n);
     if(n-=wn)mv(z->p+wn,z->p,n);R z;}
    V1(sha){A z=ga(0,1,&w->r);mv(z->p,w->d,w->r);R z;}
    V1(id){R w;}V1(size){A z=ga(0,0,0);*z->p=w->r?*w->d:1;R z;}
    pi(i){P("%d ",i);}nl(){P("\n");}
    pr(w)A w;{I r=w->r,*d=w->d,n=tr(r,d);DO(r,pi(d[i]));nl();
     if(w->t)DO(n,P("< ");pr(w->p[i]))else DO(n,pi(w->p[i]));nl();}
    
    C vt[]="+{~<#,";
    A(*vd[])()={0,plus,from,find,0,rsh,cat},
     (*vm[])()={0,id,size,iota,box,sha,0};
    I st[26]; qp(a){R a>='a'&&a<='z';}qv(a){R a<'a';}
    A ex(e)I *e;{I a=*e;
     if(qp(a)){if(e[1]=='=')R st[a-'a']=ex(e+2);a= st[ a-'a'];}
     R qv(a)?(*vm[a])(ex(e+1)):e[1]?(*vd[e[1]])(a,ex(e+2)):(A)a;}
    noun(c){A z;if(c<'0'||c>'9')R 0;z=ga(0,0,0);*z->p=c-'0';R z;}
    verb(c){I i=0;for(;vt[i];)if(vt[i++]==c)R i;R 0;}
    I *wd(s)C *s;{I a,n=strlen(s),*e=ma(n+1);C c;
     DO(n,e[i]=(a=noun(c=s[i]))?a:(a=verb(c))?a:c);e[n]=0;R e;}
    
    main(){C s[99];while(gets(s))pr(ex(wd(s)));}

    http://www.kuro5hin.org/story/2002/8/30/175531/763

    Taken from Roger Hui's An Implementation of J.

    One summer weekend in 1989, Arthur Whitney visited Ken Iverson at Kiln Farm and produced — on one page and in one afternoon — an interpreter fragment on the AT&T 3B1 computer. I studied this interpreter for about a week for its organization and programming style; and on Sunday, August 27, 1989, at about four o'clock in the afternoon, wrote the first line of code that became the implementation described in this document.

    Arthur's one-page interpreter fragment is as follows:

    Read inside for the most beautiful code you have ever seen.

    bazhenovc, 12 Ноября 2012

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