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

    +151

    1. 1
    return *reinterpret_cast<ChatUnitList*>(&m_contacts); //black magic

    Действительно черная магия... Хотя работает, но я не уверен, что на всех платформах

    Sauron, 28 Июня 2010

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

    +169

    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
    struct IText{
     
    	typedef boost::shared_ptr<IText> SPtr;
     
    	virtual void draw() = 0;
     
    	virtual void add(const SPtr&) {
    		throw std::runtime_error("IText: Can't add to a leaf");
    	}
     
    	virtual void remove(const SPtr&){
    		throw std::runtime_error("IText: Can't remove from a leaf");
    	}
    };
     
    struct CompositeText: public IText{
     
    	void add(const SPtr& sptr){
    		children_.push_back(sptr);
    	}
     
    	void remove(const SPtr& sptr){
    		children_.remove(sptr);
    	}
     
    	void replace(const SPtr& oldValue, const SPtr& newValue){
    		std::replace(children_.begin(), children_.end(), oldValue, newValue);
    	}
     
    	virtual void draw(){
    		BOOST_FOREACH(SPtr& sptr, children_){
    			sptr->draw();
    		}
    	}
     
    private:
    	std::list<SPtr> children_;
    };
     
    struct Letter: public IText{
     
    	Letter(char c):c_(c) {}
     
    	virtual void draw(){
    		std::cout<<c_;
    	}
     
    private:
    	char c_;
    };
     
     
    int main(){
     
    	CompositeText sentence;
     
    	IText::SPtr lSpace(new Letter(' '));
    	IText::SPtr lExcl(new Letter('!'));
    	IText::SPtr lComma(new Letter(','));
    	IText::SPtr lNewLine(new Letter('\n'));
    	IText::SPtr lH(new Letter('H')); // letter 'H'
    	IText::SPtr le(new Letter('e')); // letter 'e'
    	IText::SPtr ll(new Letter('l')); // letter 'l'
    	IText::SPtr lo(new Letter('o')); // letter 'o'
    	IText::SPtr lW(new Letter('W')); // letter 'W'
    	IText::SPtr lr(new Letter('r')); // letter 'r'
    	IText::SPtr ld(new Letter('d')); // letter 'd'
    	IText::SPtr li(new Letter('i')); // letter 'i'
     
    	IText::SPtr wHello(new CompositeText);
    	wHello->add(lH);
    	wHello->add(le);
    	wHello->add(ll);
    	wHello->add(ll);
    	wHello->add(lo);
     
    	IText::SPtr wWorld(new CompositeText); // word "World"
    	wWorld->add(lW);
    	wWorld->add(lo);
    	wWorld->add(lr);
    	wWorld->add(ll);
    	wWorld->add(ld);
     
    	sentence.add(wHello);
    	sentence.add(lComma);
    	sentence.add(lSpace);
    	sentence.add(wWorld);
    	sentence.add(lExcl);
    	sentence.add(lNewLine);
     	sentence.draw();  // ptrints "Hello, World!\n"
     	IText::SPtr wHi(new CompositeText); // word "Hi"
    	wHi->add(lH);
    	wHi->add(li);
     	sentence.replace(wHello, wHi);
    	sentence.draw();  // ptrints "Hi, World!\n"
     	sentence.remove(wWorld);
                 sentence.remove(lSpace);
    	sentence.remove(lComma);
    	sentence.draw();  // ptrints "Hi!\n"

    Hi, World! Психологическая зависимость от надуманного ООП убивает проекты и их создателей. Всё хорошо в меру. (Найдено на просторах интернета).

    Говногость, 25 Июня 2010

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

    +169

    1. 1
    2. 2
    3. 3
    4. 4
    //reversed for sorting
        inline bool operator< (const Weight & other) const {
            return (GetValue() > other.GetValue());
        };

    ton4eg, 25 Июня 2010

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

    +167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    re:    data=new unsigned char[sz+1];
    #ifdef SAFEMEM
        if(!data){ SAFEMEM Sleep(1); goto re;}
    #endif
    
    Источник: http://rsdn.ru/forum/cpp.applied/3852182.aspx

    alexander-berezin, 24 Июня 2010

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

    +148

    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
    struct table1
    
    {
    
    	char name_of_function[3];
    
    	char name_of_variable[3];
    
    	char values[50];
    
    };
    
    struct table2
    
    {
    
    	char name_of_function[3];
    
    	char name_of_variable[3];
    
    	char values[50];
    
    };
    
    ///
    
    table1 potential[10];
    table2 returned[10];
    
    ///
    
     if(strcmp(s,returned[m].name_of_function)==0)
    						 {
    							while((strcmp(potential[mm].name_of_function,returned[m].name_of_function)!=0)&&mm<10){mm++; mmm=mm;}
    							if((strcmp(potential[mmm].name_of_function,returned[m].name_of_function)==0)&&mm<10)
    							{	
    								while(strcmp(potential[mmm].name_of_function,returned[m].name_of_function)==0){mmm++;}
    								mmm--;
    								while((mm<=mmm)&&bo==false)
    								{
    									if(strcmp(potential[mmm].name_of_variable,returned[m].name_of_variable)==0)
    									{
    										strcpy(returned[m].values,potential[mmm].values);
    										bo=true;
    									}
    									mmm--;
    								}
    								if(bo==false)
    								{
    									strcpy(returned[m].values,"ax\0");
    								}
    							}							
    						 }
    ///

    Лишь небольшой кусок из курсового проекта.

    Mifodix, 24 Июня 2010

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

    +174

    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
    signed ToBool(signed b){unsigned t=b;return ( ((t<<0)>>31)  |  ((t<<1) >>31)  |  ((t<<2) >>31)  |  ((t<<3) >>31)  |  ((t<<4) >>31) | ((t<<5) >>31) | ((t<<6) >>31) | ((t<<7) >>31) | ((t<<8) >>31) | ((t<<9) >>31) | ((t<<10) >>31) | ((t<<11) >>31) | ((t<<12) >>31) | ((t<<13) >>31) | ((t<<14) >>31) | ((t<<15) >>31) | ((t<<16) >>31) | ((t<<17) >>31) | ((t<<18) >>31) | ((t<<19) >>31) | ((t<<20) >>31) | ((t<<21) >>31) | ((t<<22) >>31) | ((t<<23) >>31) | ((t<<24) >>31) | ((t<<25) >>31) | ((t<<26) >>31) | ((t<<27) >>31) | ((t<<28) >>31) | ((t<<29) >>31) | ((t<<30) >>31) | ((t<<31) >>31) );};
    signed NotBool(signed b){/*signed b=ToBool(b);*/unsigned t=(~b)<<31;return t>>31;};
    signed isZero(signed a){return NotBool(ToBool(a));};
    signed isNotZero(signed a){return NotBool(isZero(a));};
    signed isSign(signed a){unsigned t=a;return (t>>31);};signed isNotSign(signed a){return NotBool(isSign(a));};
    signed isEqual(signed a,signed b){	return isZero(a-b);};
    signed isNotEqual(signed a,signed b){return NotBool(isEqual(a,b));};
    signed isLess(signed a,signed b){return isSign(a-b);};
    signed isEqualMore(signed a,signed b){return NotBool(isLess(a,b));};
    signed isEqualLess(signed a,signed b){return isEqual(a,b)|isLess(a,b);};
    signed isMore(signed a,signed b){return NotBool(isEqualLess(a,b));};
    signed Equal(signed a,signed b,signed success,signed fail){signed t=isEqual(a,b);return (success*t)+(fail*NotBool(t));};
    signed NotEqual(signed a,signed b,signed success,signed fail){signed t=NotBool(isEqual(a,b));return (success*t)+(fail*NotBool(t));};
    signed Less(signed a,signed b,signed success,signed fail){signed t=isLess(a,b);return (success*t)+(fail*NotBool(t));};
    signed More(signed a,signed b,signed success,signed fail){signed t=isMore(a,b);return (success*t)+(fail*NotBool(t));};
    signed EqualLess(signed a,signed b,signed success,signed fail){signed t=isEqualLess(a,b);return (success*t)+(fail*NotBool(t));};
    signed EqualMore(signed a,signed b,signed success,signed fail){signed t=isEqualMore(a,b);return (success*t)+(fail*NotBool(t));};

    Вот такое форматирование... Хотя функции какие-то сомнительные...

    Говногость, 23 Июня 2010

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

    +170

    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
    //Файл teamWorkFile.h:
    static int teamWork(int e)
    {
    #if N==0
    	return 0;
    #elif N==1
    	return Work52(e+1);
    #elif
    	return WorkN(N);
    #endif
    };
    
    //Файл teamWork.h:
    //...
    #define MaxProc 6
    typedef int (*ProcTypeTeamWork)(int e);
    ProcTypeTeamWork Proc[MaxProc]; 
    #define N 0
    #define teamWork ProcName0
    #include "teamWorkFile.h"
    #undef teamWork
    #undef N
    #define N 1
    #define teamWork ProcName1
    #include "teamWorkFile.h"
    #undef teamWork
    #undef N
    int InitMultiProc()
    {
    	Proc[0]=ProcName0;
    	Proc[1]=ProcName1;
    	Proc[2]=ProcName1;
    	Proc[4]=ProcName0;
    	Proc[5]=ProcName1;
    	return 0;
    };
    
    //Файл teamWorkLib.cpp:
    #include "teamWork.h"
    //...
    InitMultiProc();
    ProcTypeTeamWork SuperProc=Proc[5];
    //Дальше в этом файле вызовы в стиле Proc[i](e);, SuperProc(255); и тд...

    Удивительный код состоит из 3х файлов(teamWorkLib.cpp, teamWork.h, teamWorkFile.h), но он того стоит.

    Говногость, 23 Июня 2010

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

    +167

    1. 1
    2. 2
    3. 3
    bool dicLoaded_ = false;
    ....
    dicLoaded_ = dicLoaded_?false:true;

    Еще один перл из кандидатских заданий. Любителям тернарных операторов посвящается.

    Lexey, 23 Июня 2010

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

    +167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #define ItemType char
    #define SecondItemType unsigned
    class Doubler
    {
    	ItemType _i1_;
    	SecondItemType _i2_;
    	//...
    	//Дальше идёт много функций класса, использующие ItemType и SecondItemType.
    	//...
    };

    Говногость, 23 Июня 2010

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

    +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
    class ControlerSingleton
    {
    private:
    	static int ControlCode;
    	static bool disaPear;
    	static int ArraySize;
    	//...
    	void Constructor()
    	{
    		//...
    		ArraySize=sizeof(masi)/sizeof(masi[0]);
    		disaPear=Pear();
    		threadRAII.Wait();
    		ControlCode=threadRAII.result();
    		//...
    	};
    	static int construct=Constructor();
    public:
    	const bool Pear()
    	{
    	//...
    };

    Своеобразный "конструктор" в классе синглтона.

    Говногость, 23 Июня 2010

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