1. C++ / Говнокод #4884

    +159

    1. 1
    int** ppi = new int*;

    bot225, 09 Декабря 2010

    Комментарии (56)
  2. C++ / Говнокод #4864

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    CRect rcHeaderImage;
    rcHeaderImage.left = listColumn.m_strText.IsEmpty() ? ( ( rcHeaderText.left + rcHeaderText.right ) / 2 ) - ( sizeIcon.cx / 2 ) 
            - (( !m_bShowThemed
    #ifndef DISABLE_XP_THEMES
            || m_thmHeader.IsThemeNull()
    #endif
            ) ? 0 : 1 ) : rcHeaderText.left;

    Вот так вот задачка "подвинуть иконку вправо на пару пикселов" превращается в нетривиальную :)

    ryadovoy, 08 Декабря 2010

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

    +152

    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
    //CreatorOfBullshit говорит: следите за руками
    void __fastcall TFORM_MENU::pan_newClick(TObject *Sender) //запуск новой игры
    {
      if(fl_sound)sndPlaySound("Data\\Sounds\\push.wav",SND_ASYNC|SND_NODEFAULT);
      tm_showstarthint->Enabled=false;
      pan_cong->Visible=false;
      pan_hider->Visible=false;
      pan_new->Caption="Еще разок";//меняем надпись на кнопке
      pan_new->Hint="Начать новую сборку";
      pan_sign->Color=clBlack;
      lab_timeleft->Caption="00:00";
      lab_timeleft->Hint="...а время течёт, как вода по трубам...";
      tm_gameseconds->Enabled=false; //сначала останавливаем таймер, и после окончания прорисовки стартового поля запускаем его снова
      Label1->Visible=true;
      lab_timeleft->Visible=true;
      game_time_seconds=0;//сброс времени
      game_time_minutes=0;
    
      pb_viewport->Enabled=true;
      for(int i=0;i<128;i++)
      {
        gameplane.recreate();
        if(gameplane.getclosed()<8)
          break;
      }
      game_start_count=gameplane.getclosed();
      gameplane.drawfield();
      lab_per->Caption=IntToStr( (int)( (float)gameplane.getclosed()*100.f/(float)(game_field_width*game_field_height) ) )+"%";
      tm_gameseconds->Enabled=true;  //запускаем таймер
    }
     ...
    //CreatorOfBullshit говорит: "фрагмент из модуля с определениями для класса объекта gameplane" тот самый recreate()
    ...
    void C_GAMEFIELD::recreate()
    {
    /*
      Создаю игровое поле и расположения 
      */
      int i,j;
      for(i=0;i<width;i++)
      {
        for(j=0;j<height;j++)
        {
          pp_field[i][j]=0;
        }//for j
      }//for i
      //определение центральной точки источника воды:
      if( (width&b0001)==0 )
        start_x=(width>>1)-1;
      else
        start_x=(width>>1);
      //_  _  _  _  _  _  _  _  _  _  _  _
      if( (height&b0001)==0 )
        start_y=(height>>1)-1;
      else
        start_y=(height>>1);
      pp_field[start_x][start_y]|=wALWAYSON;//назначение стартовой метки(поднимается флаг)
      crt_crgf();
      checklinkup();
      for(i=0;i<width;i++)for(j=0;j<height;j++)
      {
        pp_mask[i][j]=pp_field[i][j];
      }//for
    }
    ...
    //CreatorOfBullshit говорит: "Теперь проследуем в crt_crgf()"
    void C_GAMEFIELD::crt_crgf() //Соединяет неправильно построеенные трубы 
    { //Проработать мне нужно алгоритм построения!!!
      unsigned __int8 i,j;
      static int brd_right,
                 brd_bottom,
                 bounds;
      crt_setcell(start_x,start_y, TRIPLE);  ///crt_setcell создает трубу, потом тут же ее поворачиваем
      //далее первый шаг построения: сначала создаются совершенно случайные незаконо-
      //мерные ветви, т.е. могут остаться НЕЗАПОЛНЕННЫЕ участки:
      unsigned __int8 startcell=pp_field[start_x][start_y], tryingcell;
      if( (startcell&UP)==UP )
        crt_connect(start_x,start_y-1,DOWN);
      if( (startcell&DOWN)==DOWN )
        crt_connect(start_x,start_y+1,UP);
      if( (startcell&LEFT)==LEFT )
        crt_connect(start_x-1,start_y,RIGHT);
      if( (startcell&RIGHT)==RIGHT )
        crt_connect(start_x+1,start_y,LEFT);
    }
    //CreatorOfBullshit говорит: "Апофеоз говнокодизма - чуть ниже:"
    inline void C_GAMEFIELD::crt_setcell(unsigned __int8 x, unsigned __int8 y, unsigned __int8 pipetype)
    {
      pp_field[x][y]|=pipetype;
      //создаем трубу по заказу и рандумно поворачиваем
      if(random(2))
        rotate_CW(x,y);
      if(random(2))
        rotate_CW(x,y);
      if(random(2))
        rotate_CW(x,y);
    }

    Говнокод написан лично моими руками на первом курсе института. Писал игру в которой нужно поворачивать трубы так чтобы потом по всему игровому полю текла вода. Писал на Буилдере 5.0. Угощайтесь.
    Алсо это не еще не все - там есть фрагмент в котором китайским методом создаются спрайты игровых текстур.
    С:8444

    CreatorOfBullshit, 08 Декабря 2010

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

    +158

    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
    class SomeClass
    {
    public:
        SomeClass(bool evenlope = true)
        {
            if(evenlope)
            {
                if (IsVistaOrGreater())
                    mLetter = new SomeClassVista;
                else
                    mLetter = new SomeClassXP;
            }
            else
                mLetter = 0;
        }
        virtual ~SomeClass() { delete mLetter; }
        virtual bool Foo(int param) { return mLetter->Foo(param); }
    private:
        SomeClass* mLetter;
    };
    
    class SomeClassXP : public SomeClass
    {
    public:
            SomeClassXP():SomeClass(false) { /* ... */ }
    	~SomeClassXP() { /* ... */ }
    	virtual bool Foo(int param) { /* ... */ }
    };

    Нужно было добавить поддержку новых настроек висты и семёрки, которые нельзя изменить через старый интерфейс. Наговнякал.

    rat4, 07 Декабря 2010

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

    +145

    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
    #include <stdio.h>
    #include <stdlib.h>
    
    #define m(x)(x<0?-1:!!x)
    #define g tj()-J
    #define a(x)(x<0?-x:x)
    #define h(x)((x)<=K?x:N-(x))
    #define f 9999
    #define A return
    #define H printf(
    #define R double
    #define U int
    #define V for
    #define b else
    #define u while
    #define B if
    U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
    U S=m(v)+(m(w)<<K); B(!S)A J; V(v=W+S; v!=J&&!q[v]; v+=S); A v; } k(){ _=K; A
    
    v?a(v)>1||w-Y||!q[J]:(w-Y&&(w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/
    v?a(v)>2))||q[J];
    
    } z(){ _=5; A v*w||g; } e(){ _= -2;
    A(v*v*v-v||w*w*w-w)&&(J-W-2||(W&N)-4||(W>>K!=(Y-1?N:0))||
    q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*Y<0); } R VR(){ ! int PZ=0x7fff;
    A(R)(rand()&PZ)/(R)PZ; } l(){ _=K+1; A(v*w&&a(v)-a(w))||g; } R UC(){ R i=0,d;
    u((i+=d=VR())<1.0); A d; } c(){ _= -11; A a(v)-a(w)||g; } I(ur,n,x){ W=ur;
    J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J&N)-(W&N); w=(J>>K)-(W>>K); A
    q[W]()||(x&&QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
    V(i=0; i<M; ++i){ B(j<0&&P[i]== -Y&&TT(i)&&_== -2) { j=i; i= -1; } b
    
    B(j>=0&&!I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){
    
    V(v=0; v<f; ++v){ B(h(v>>K)==0){ U S=h(v&N);
    q[v]=!S?z:(S==1?bb:(S==2?c:(v&N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
    P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; i<M; ++i){
    i%8||H"\n%4o ",i); B((Y=P[i]=m(P[i]))&& TT(i))H"%c ",_+93+Y*16); b H"- "); }
    H"\n "); do H"%2d",i++&N); u(i&N); Y=G; H"\n"); } O(W,J){
    B((q[J]=q[W])==k&&h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
    B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=! 0; P[W]=0; } QL(W,J,D)L D; { U
    HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
    P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i<M; ++i){ L Z=q[i]; B(Z){ U
    
    r=h(i>>K)+h(i&N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]<0?N-(i>>K):(i>>K)):
    
    (Z==l?124-((YY<8&&((i&N)!=K|| (i>>K)!=(P[i]>0?0:N)))?M:0):
    (Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j<M;
    ++j)B(!I(i,j,0))S+=(P[j]?5:1); BZ+=G==Y?S:-S; Y=G; } }
    B(!(++X&M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
    B(!F--)A++F+C(); V(i=0; i<JZ; ++i)B(!I(i>>K+K,i&M-1,1)){ Y= -Y; o= -E; t=
    
    -QL(i>>K+K,i&M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }
    
    B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
    H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
    u(scanf("%o%o",&i,&j)!=2||I(i,j,1)); O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();
    
    i=p>&g t;(K<<1); j=p&(M-1); B(I(i,j,1)){ H"Rats!\n"); A; } O(i,j); Y= -! Y;
    B(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long
    B(T>time(),j=time(&j);
    
    R i=0; srand((U)j); V(M=0; M<=f; ++M)i+=UC(); M=i/100; B(M&3)++M; B(M&1)--M;
    V(N=1; N*N<M; ++N); K= --N/2; F=ac>1?atoi(av[1]):2; uv(); RZ(); }

    no comments

    onto, 03 Декабря 2010

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int i=0;
    for (i=0;i<2;)
    {cout<<"Enter M takoe 4to Bbl -> m>0 .\n ";
    cin>>M;
    if (M>0)
    i=76;
    }

    Из лабы однокурсника по C++.

    SemenBooxy, 29 Ноября 2010

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

    +145

    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
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    using namespace std;
    
    int main()
    {
    	int wc,cnt=0,maxp=0,minp=2147483647,maxn=-2147483648,minn=0,pos=0,neg=0,zf=0;
    	fstream(f);
    	f.open("input.txt",ios::in);
    
    	while (!f.eof())
    	{
    		if(!zf) zf--;
    		wc=0;
    		f >>wc;
    		if (wc>0) { if (maxp<wc) maxp=wc;  if (minp>wc) minp=wc; pos++; }
    		else {if (minn>wc) minn=wc;  if (maxn<wc&&wc)maxn=wc; if (!wc) zf+=2; else neg++; }
    	}
    	if (pos>1 && neg>1)
    		if ((float)maxp/minp > (float)minn/maxn) cout<<maxp<<"/"<<minp<<"="<<(float)maxp/minp;
    			else cout<<minn<<"/"<<maxn<<"="<<(float)minn/maxn;
    
    	if (pos>1 && neg<2)	cout<<maxp<<"/"<<minp<<"="<<(float)maxp/minp;
    	if (pos<2 && neg>1)	cout<<minn<<"/"<<maxn<<"="<<(float)minn/maxn;
    
    		if (pos<=1 && neg<=1)
    			if(zf) if(pos) cout<<"0/"<<minp<<"=0";else cout<<"0/"<<minn<<"=0";
    				else if ((float)maxp/maxn>(float)maxn/maxp)cout<<maxp<<"/"<<maxn<<"="<<(float)maxp/maxn; 
                                  else cout<<maxn<<"/"<<maxp<<"="<<(float)maxn/maxp;
    
    	if (pos+neg+zf<=1) cout<<"No solution!";
    
    	f.close();
     getch();
    	
    return 0;
    }

    Задача 2-ого курса: "в массиве целых числел найти два таких числа, чтобы их частное было максимальным ( O(n) )"
    И ее решение -.- Особо доставляет название переменных

    bulka, 29 Ноября 2010

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

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    int count(int a)
    {
        int cnt=0;
        while(a)
        {
             ++cnt;
        }
        return cnt;
    }

    Ф-ция для подсчета количества знаков числа. Взято с www.cyberforum.ru

    psina-from-ua, 28 Ноября 2010

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

    +147

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <algorithm>
    #include <vector>
    #include <string>
    
    #define N 5
    #define TSK "durak"
    
    using namespace std;
    
    int m[N];
    
    int main(void){
      freopen(TSK".in",  "rt", stdin);
      freopen(TSK".out", "wt", stdout);
    
      scanf("%d%d%d%d", &m[0], &m[1], &m[2], &m[3]);
    
      sort(m, m + 4);
    
      int ans(0);
    
      for(int i = 1; i < 4; i++){
        if(m[i] == m[i-1] && m[i] != 0)
          ans++;
      }
    
      printf("%d\n", ans);
    
      return 0;
    }

    MadMag, 27 Ноября 2010

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

    +159

    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
    // TODO: use Virtual memory instead of heap!
    #ifndef __CHUNK_H__
    #define __CHUNK_H__
    #include <windows.h>
    #include "../JuceLibraryCode/JuceHeader.h"
    
    class Chunk {
    
    public:
    	enum CHUNK_DIRECTION {CHUNK_UNKNOWN = 0, CHUNK_IN, CHUNK_OUT};
    	Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection);
    	~Chunk ();
    	// override
    	virtual void eventChunkIsEmpty () { 
    		Logger::outputDebugString(T("empty")); 
    	}
    	virtual void eventChunkIsFull () {
    		Logger::outputDebugString(T("full"));
    	}
    	virtual void eventChunkOverrun () {
    		Logger::outputDebugString(T("overrun"));
    	}
    	DWORD getData (WORD *data, DWORD size) {
    		if (data == 0) return 0;
    		if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
    			if (((size + nReadCounter) > nWriteCounter) || size == 0) { cs.exit(); return 0; }
    			memcpy (data, pBuffer + nReadCounter, size*sizeof(WORD));
    			nReadCounter += size;
    			if (nReadCounter == nWriteCounter) { eventChunkIsEmpty() ; nWriteCounter = 0; nReadCounter = 0; }
    			cs.exit ();
    			return size;
    		}
    		return 0;
    	}
    	DWORD putData (WORD *data, DWORD size) {
    		if (data == 0) return 0;
    		if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
    			if ((size + nWriteCounter) > nSize) { eventChunkOverrun(); cs.exit (); return 0; }
    			memcpy (pBuffer + nWriteCounter, data, size*sizeof(WORD));
    			nWriteCounter += size;
    			if (nWriteCounter == nSize ) eventChunkIsFull();
    			cs.exit ();
    			return size;
    		}
    		return 0;
    	}
    	inline DWORD getSize () {
    		return nSize;
    	}
    	// TODO: add check for nWriteCounter?
    	inline bool setSize (DWORD ChunkSize) {
    		if (bExchangeIsActive) return false;
    		nSize   = ChunkSize;
    		// TODO: add result check.
    		pBuffer = (WORD*) realloc ((void*)pBuffer, ChunkSize*sizeof(WORD));
    		if (pBuffer) return true;
    		return false;
    	}
    	inline DWORD getReadCounter () { return nReadCounter; }
    	inline DWORD getWriteCounter () { return nWriteCounter; }
    	juce_UseDebuggingNewOperator
    protected:
    	bool            bExchangeIsActive;
    	CHUNK_DIRECTION cdDirection;
    	DWORD           nSize;
    	DWORD           nWriteCounter;
    	DWORD           nReadCounter;
    	WORD            nChunkId;
    	WORD           *pBuffer;
    	CriticalSection cs;
    };
    #endif
    // EOF
    #include "Chunk.h"
    Chunk::Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection) {
    	bExchangeIsActive = false;
    	cdDirection       = chunkDirection;
    	nSize             = ChunkSize;
    	nWriteCounter     = 0;
    	nReadCounter      = 0;
    	nChunkId          = id;
    	pBuffer           = (WORD*) malloc (ChunkSize*sizeof(WORD));
    	zeromem (pBuffer, ChunkSize*sizeof(WORD));
    }
    Chunk::~Chunk () {
    	if (pBuffer) free (pBuffer);
    }
    // EOF

    Посвящается всем изобретателям велосипедов и просто неудачникам.. :(

    neudachnik, 27 Ноября 2010

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