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

    +54.6

    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
    #include <iostream>
    
    class TerVer {
    public:
      short d1, d2, d3, d4;
      short totalCounter, goodCounter;
      bool DoneInc;
      TerVer(): d1(1), d2(0), d3(0), d4(0), totalCounter(1), goodCounter(0), DoneInc(false) {}
      bool IsGood() {
        return (
          (d1==d2 && d1!=d3 && d1!=d4 && d3!=d4) ||
          (d1==d3 && d1!=d2 && d1!=d4 && d2!=d4) ||
          (d1==d4 && d1!=d2 && d1!=d3 && d2!=d3) ||
    
          (d2==d3 && d2!=d1 && d2!=d4 && d1!=d4) ||
          (d2==d4 && d2!=d1 && d2!=d3 && d1!=d3) ||
    
          (d3==d4 && d3!=d1 && d3!=d2 && d1!=d2)
          ) ? true : false;
      }
      void Inc() {
        d4++; 
        if(d4>9) { d4=0; d3++; if(d3>9) {d3=0; d2++; if(d2>9) { d2=0; d1++; if(d1>9) DoneInc = true; } } }
        if (!DoneInc) { totalCounter++; if (IsGood()) goodCounter++; }
      }
    };
    
    int main() {
      TerVer z;
      while(!z.DoneInc) {
        z.Inc();
      }
      cout << z.goodCounter << " / " << z.totalCounter << " = " << (double)z.goodCounter/z.totalCounter << endl;
    
      return 0;
    }

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

    elmigranto, 30 Марта 2010

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

    +940.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    bool checkForExe(std::string ext)
    {
        return ext==".exe" ? true : 
                  ext==".Exe" ? true :
                  ext==".eXe" ? true :
                  ext==".EXe" ? true :
                  ext==".exE" ? true :
                  ext==".ExE" ? true :
                  ext==".eXE" ? true :
                  ext==".EXE" ? true : false;
    }

    Нашел в одной моей очень древней программе-шутке. Регистронезависимая проверка на расширение .exe.

    frp, 29 Марта 2010

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

    +144.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #define THIS_FILE __FILE__
    #define Default 0xFFFFFFFF
    
    void* __cdecl operator new(size_t nSize, LPCSTR lpszFileName, int nLine=Default)
    {
    void * v = ::operator new(nSize, _NORMAL_BLOCK, lpszFileName, nLine);
    return v;
    }
    
    void __cdecl operator delete(void * _P, char*){
    ::delete (_P);
    }

    Какие страсти...

    Говногость, 29 Марта 2010

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

    +59.8

    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
    void addItem(QStringList &lst, QTreeWidget *ptwg)
    {
    	bool a0 = false;
    	for (int i = 0; i < ptwg->topLevelItemCount(); ++i) {
    		if (lst.at(0) == ptwg->topLevelItem(i)->text(0)) {
    			a0 = true;
    			bool a1 = false;
    			QTreeWidgetItem *itm0 = ptwg->topLevelItem(i);
    			for (int j = 0; j < itm0->childCount(); ++j) {
    				if (lst.at(1) == itm0->child(j)->text(1)) {
    					a1 = true;
    					bool a2 = false;
    					QTreeWidgetItem *itm1 = itm0->child(j);
    					for (int k = 0; k < itm1->childCount(); ++k) {
    						if (lst.at(2) == itm1->child(k)->text(2)) {
    							a2 = true;
    							bool a3 = false;
    							QTreeWidgetItem *itm2 = itm1->child(k);
    							for (int l = 0; l < itm2->childCount(); ++l) {
    								if (lst.at(3) == itm2->child(l)->text(3)) {
    									a3 = true;
    									QTreeWidgetItem *itm3 = itm2->child(l);
    									QTreeWidgetItem *itm4 = new QTreeWidgetItem(itm3, QStringList() << "" << "" << "" << "" << lst.at(4));
    									break;
    								}
    							}
    							if (!a3) {
    								QTreeWidgetItem *itm3 = new QTreeWidgetItem(itm2, QStringList() << "" << "" << "" << lst.at(3));
    								QTreeWidgetItem *itm4 = new QTreeWidgetItem(itm3, QStringList() << "" << "" << "" << "" << lst.at(4));
    							}
    							break;
    						}
    					}
    					if (!a2) {
    						QTreeWidgetItem *itm2 = new QTreeWidgetItem(itm1, QStringList() << "" << "" << lst.at(2));
    						QTreeWidgetItem *itm3 = new QTreeWidgetItem(itm2, QStringList() << "" << "" << "" << lst.at(3));
    						QTreeWidgetItem *itm4 = new QTreeWidgetItem(itm3, QStringList() << "" << "" << "" << "" << lst.at(4));
    					}
    					break;
    				}
    			}
    			if (!a1) {
    				QTreeWidgetItem *itm1 = new QTreeWidgetItem(itm0, QStringList() << "" << lst.at(1));
    				QTreeWidgetItem *itm2 = new QTreeWidgetItem(itm1, QStringList() << "" << "" << lst.at(2));
    				QTreeWidgetItem *itm3 = new QTreeWidgetItem(itm2, QStringList() << "" << "" << "" << lst.at(3));
    				QTreeWidgetItem *itm4 = new QTreeWidgetItem(itm3, QStringList() << "" << "" << "" << "" << lst.at(4));
    			}
    			break;
    		}
    	}
    	if (!a0) {
    		QTreeWidgetItem *itm0 = new QTreeWidgetItem(ptwg, QStringList() << lst.at(0));
    		QTreeWidgetItem *itm1 = new QTreeWidgetItem(itm0, QStringList() << "" << lst.at(1));
    		QTreeWidgetItem *itm2 = new QTreeWidgetItem(itm1, QStringList() << "" << "" << lst.at(2));
    		QTreeWidgetItem *itm3 = new QTreeWidgetItem(itm2, QStringList() << "" << "" << "" << lst.at(3));
    		QTreeWidgetItem *itm4 = new QTreeWidgetItem(itm3, QStringList() << "" << "" << "" << "" << lst.at(4));
    	}
    }

    Функция = ) Добавляет в контрол иерархического дерева (5 уровней) элемент, не перерисовывая при этом само дерево, не закрывая никаких открытых веток.

    JC_NVKZ, 24 Марта 2010

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

    +63.6

    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
    D3DXINLINE
    D3DXVECTOR2::D3DXVECTOR2( CONST FLOAT *pf )
    {
    #ifdef D3DX_DEBUG
        if(!pf)
            return;
    #endif
    
        x = pf[0];
        y = pf[1];
    }
    
    D3DXINLINE
    D3DXVECTOR2::D3DXVECTOR2( CONST D3DXFLOAT16 *pf )
    {
    #ifdef D3DX_DEBUG
        if(!pf)
            return;
    #endif
    
        D3DXFloat16To32Array(&x, pf, 2);
    }
    
    D3DXINLINE BOOL
    D3DXVECTOR3::operator == ( CONST D3DXVECTOR3& v ) const
    {
        return x == v.x && y == v.y && z == v.z;
    }
    
    D3DXINLINE BOOL
    D3DXVECTOR3::operator != ( CONST D3DXVECTOR3& v ) const
    {
        return x != v.x || y != v.y || z != v.z;
    }

    Во-первых, классный "режим отладки". Если D3DX_DEBUG определён, то при нулевом указателе pf происходит тихий возврат. Совершенно, так сказать, по-английски. А вот анализ второй функции показывает, что данный исходник вообще не получится собрать с D3DX_DEBUG. Наглядная иллюстрация вреда тупого копипаста. Определения операторов == и != демонстрируют, как не надо сравнивать вещественные числа.
    Кто же автор этого безобразия? Имя не известно, зато известно место работы. Ибо этот "код" полностью представлен в файле d3dx9math.inl от компании Microsoft.

    whiskey, 22 Марта 2010

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

    +55.4

    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
    #include <math.h>
    #include <assert.h>
    #include "vector10d.h"
     
    float vcompare_epsilon10d = 0.0005f;
     
    ml inlined float v10d_getElement(vec10d *v, int index)
    {
        assert( v != 0);
        assert( index >= 0 );
        assert( index <  3 );
        return (* ((&((v)->x)) +  (index) ));
    }
    ml inlined bool v10d_isValid(const vec10d *v)
    {
        if(v == 0) return g_false;
        if((v->x * v->x) < 0.0f)return g_false;
        if((v->y * v->y) < 0.0f)return g_false;
        if((v->z * v->z) < 0.0f)return g_false;
        if((v->w * v->w) < 0.0f)return g_false;
        if((v->m * v->m) < 0.0f)return g_false;
        if((v->n * v->n) < 0.0f)return g_false;
        if((v->o * v->o) < 0.0f)return g_false;
        if((v->p * v->p) < 0.0f)return g_false;
        if((v->r * v->r) < 0.0f)return g_false;
        if((v->s * v->s) < 0.0f)return g_false;
        return g_true;
    }
    ml inlined void v10d_set(vec10d *v, float x, float y, float z, float w, float m,
               float n, float o, float p, float r, float s)
    {
        assert(v = 0);
        v->x=x;
        v->y=y;
        v->z=z;
        v->w=w;
        v->m=m;
        v->n=n;
        v->o=o;
        v->p=p;
        v->r=r;
        v->s=s;
        assert( v10d_isValid(v) != g_false );
    }
    ml inlined void v10d_get(const vec10d *v, float *x, float *y, float *z, float *w,
         float *m, float *n, float *o, float *p, float *r, float *s)
    {
        assert ( v != 0 );
        assert ( x != 0 );
        assert ( y != 0 );
        assert ( z != 0 );
        assert ( w != 0 );
        assert ( m != 0 );
        assert ( n != 0 );
        assert ( o != 0 );
        assert ( p != 0 );
        assert ( r != 0 );
        assert ( s != 0 );
        assert( v10d_isValid(v) != g_false );
     
        *x = v->x;
        *y = v->y;
        *z = v->z;
        *w = v->w;
        *m = v->m;
        *n = v->n;
        *o = v->o;
        *p = v->p;
        *r = v->r;
        *s = v->s;
    }

    Сие чудо нарыл на просторах интернетов. Для ценителей весь исходник http://pastebin.org/114060 .. Очевидно чуваки писали очередной Crysis :)

    Valor, 16 Марта 2010

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

    +63.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
    bool FindActualQtyOfWeightedReceptacle
                                     (      std::map<double,double> &ReceptacleWeighings,
                                      const double                   ReceptacleId,
                                            double                  &Weight)
    {
       Weight          = 0.0;
       bool recepFound = false;
       
       for (std::map<double,double>::iterator iter  = ReceptacleWeighings.begin();
                                              iter != ReceptacleWeighings.end() && !recepFound;
                                              iter++)
       {  if (iter->first == ReceptacleId)
          {  recepFound = true;
             Weight     = iter->second;
          }
       }
    
       return(recepFound);
    }

    Во Франции одного ведущего (!) С++ программиста с ироничной фамилией Паскаль попросили таки ознакомиться со стандартными контейнерами из библиотеки STL. В частности с std::map. В итоге из-под палки он выдал вот такой "код". Возникает как минимум два вопроса:
    1. производительность?
    2. и зачем так многа букаф?

    Пардон, Жан-Люк, не обижайся. Наговнокодил...

    azabluda, 15 Марта 2010

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

    +66.9

    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
    #define DOIT(why, doit) !(why) || ((doit), (why))
    ...
    #define SAFEDOIT(why, doit, ob)\
        try\
        {\
            DOIT((why), (doit));\
        }\
        catch(...)\
        {\
            DOIT((ob), (ob)->Print(__FUNCTION__));\
        }
    ...
    // где-то в коде:
    SAFEDOIT ( ( DOIT ( pScrollBar->IsKindOf ( RUNTIME_CLASS ( CSimpleCtrl ) ) , OnPlay ( 0 ) ) ,
            DOIT ( pScrollBar->IsKindOf ( RUNTIME_CLASS ( CSeekCtrl ) ) , OnSeek ( nPos ) ) ) ,
                CFrameWnd::OnHScroll ( nSBCode, nPos, pScrollBar ) , &log ) ;

    код вполне рабочий:)

    gg_, 11 Марта 2010

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

    +62.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #define DOIT(why, doit) !(why) || ((doit), (why))
    ...
    STDMETHODIMP CSimpleCtrl::SetObjectRects(LPCRECT prcPos,LPCRECT prcClip)
    {
        DOIT(prcPos, ATLTRACE(_T("t: %d | l: %d | b: %d | r: %d"),
            prcPos->top, prcPos->left, prcPos->bottom, prcPos->right));
    
        return IOleInPlaceObject_SetObjectRects(prcPos, prcClip);
    }

    gg_, 11 Марта 2010

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

    +78.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    //---Поправка на местное время--------------------------------------------------
    TDateTime F_IonTimeFiLa(TDateTime DTMoskau, T_RealXY LF_gr)
    {
        double LMos = 30.0;		//Moskau
        //TDateTime DT=DTMoskau+((LF_gr.x-LMos)/15.0-1.0)/24.0;     //-1 час декретный, а летнее или зимнее время!
        TDateTime DT = DTMoskau + (LF_gr.x - LMos) / 15.0 / 24.0;	//без -1 час декретный, а летнее или зимнее время!
        if (LF_gr.x > 180)
            DT -= 1.0;		//-1 сутки в западном полушарии
        return (DT);
    }

    Дас ист фантастищ!
    Код зависящий от погоды. Зимой и летом нужно перекомиливать.
    За пуп земли условно принят 30 меридиан условно поименованный Moskau (что какбе символизирует)
    Алгоритм построен на делении разности между заданной долготой и долготой "Москвы" на магическое 15... ну в общем вы сами всё видите.
    Приятного просмотра и не забудьте вытереть после себя...

    crox, 11 Марта 2010

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