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

    +1000

    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
    void drawFigure()
    {
    	for(int i=0;i<figMaxI;i++)
    		for(int j=0;j<figMaxY;j++)
    			if(figure.space[i][j].wut==1)
    			{
    				if(figure.y+i>=2)
    					if(figureEffekt == 1)
    					{
    						engine->drawTexture2D(figure.picture.texID, gameSpace.x+((figure.x+j)*34)-effekt[0].x, gameSpace.y+((figure.y+i)*34)-effekt[0].y, 34, 34, 0.4, 0, 0);
    						engine->drawTexture2D(figure.picture.texID, gameSpace.x+((figure.x+j)*34)+effekt[0].y, gameSpace.y+((figure.y+i)*34)+effekt[0].x, 34, 34, 0.8, 0, 0);
    						engine->print(fontAlphabet,0, figure.space[i][j].letter , gameSpace.x+((figure.x+j)*34)+6+effekt[0].y,gameSpace.y+((figure.y+i)*34)+4+effekt[0].x,1,0,2);
    					}
    					else
    					{
    						engine->drawTexture2D(figure.picture.texID, gameSpace.x+((figure.x+j)*34), gameSpace.y+((figure.y+i)*34), 34, 34, 1, 0, 0);
    						engine->print(fontAlphabet,0, figure.space[i][j].letter , gameSpace.x+((figure.x+j)*34)+6,gameSpace.y+((figure.y+i)*34)+4,1,0,2);
    					}
    			}
    }

    великое и могучее ООП в действии

    -ggorky, 19 Февраля 2012

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    void main()
    {
        int mass[6]={4,1,3,5,7,0};
        quicksort(mass,5);
        while(mass[5]<7)
            printf("%d",mass[5]);
        getch();
    }

    в общем дал препод готовую программу, задание было найти ошибки, так как программа компилируется, и вроде как ошибка не очевидна, как там виндовс выполнять это будет не знаю, у меня бы вылетело с ошибкой сегментирования, делаю предположение. Изначально проблемное место выглядело примерно так:
    while(mass[5]<5)
    printf("%d",mass[mass[5]]);
    вот это исправление одного из студентов нашего потока, так это второй курс специальности ЭВМ, (facepalm)

    maksim_ovcharik, 17 Февраля 2012

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

    +1005

    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
    unsigned
    int
    length () {
    
        unsigned
        int
            number = (this -> number + 1) % 16;
        int
            second = size - number;
    
    
        return (second / 16) + (1 % ((second % 16) + 1)) + (1 % (number + 1));
    }

    Вот такая фигня у нас в коде, работающем в аппаратуре отображения и протоколирования данных на АЭС.
    Авторское форматирование сохранено.

    Нашли когда оно с новыми конфигами стало падать от деления на ноль при запуске.

    Balthasar, 17 Февраля 2012

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

    +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
    void CXMLParser::Parse(std::map< std::pair<int, int>, int >& link)
    {
      _di_IXMLNode areaNode = MessageNode->ChildNodes->FindNode( WideString("area") );
      if( areaNode )
      {
        Area.reset( new CAreaPart( areaNode ) );
        IXMLNodeList* pointList = areaNode->ChildNodes;
        if( pointList )
        {
          for(int pointIndex=0; pointIndex<pointList->GetCount(); pointIndex++)
          {
            _di_IXMLNode pointNode = pointList->Get( pointIndex );
            int typePoint = -1;
            if( pointNode->GetNodeName() == WideString("measuringpoint") )
              typePoint = MEASURING;
            if( pointNode->GetNodeName() == WideString("accountpoint") )
              typePoint = ACCOUNT;
            if( pointNode->GetNodeName() == WideString("deliverypoint") )
              typePoint = DELIVERY;
            switch( typePoint )
            {
            case MEASURING:
            case ACCOUNT:
            case DELIVERY:
              {
                const int pointCode    = pointNode->GetAttribute( WideString("code") );
                const String pointName = pointNode->GetAttribute( WideString("name") );
                IXMLNodeList* channelList = pointNode->ChildNodes;
                if( channelList )
                {
                  for(int channelIndex=0; channelIndex<channelList->GetCount(); channelIndex++)
                  {
                    _di_IXMLNode channelNode = channelList->Get( channelIndex );
                    if( channelNode->GetNodeName() == WideString("measuringchannel") )
                    {
                      const int channelCode    = channelNode->GetAttribute( WideString("code") );
                      const String channelDesc = channelNode->GetAttribute( WideString("desc") );
                      IXMLNodeList* periodList = channelNode->ChildNodes;
                      if( periodList )
                      {
                        for(int periodIndex=0; periodIndex<periodList->GetCount(); periodIndex++)
                        {
                          _di_IXMLNode periodNode = periodList->Get( periodIndex );
                          if( periodNode )
                          {
                            String str = periodNode->GetAttribute( WideString("start") );
                            periodNode->GetAttribute( WideString("end") );
                            TDateTime time;
                            time = TDateTime( StrToInt( str.SubString( 1, 2 ) ), StrToInt( str.SubString( 3, 2 ) ), 0, 0 );
                            periodNode->GetAttribute( WideString("summer") );
                            time = IncMinute( time, 30 );
                            _di_IXMLNode valueNode = periodNode->ChildNodes->FindNode( WideString("value") );
                            if( valueNode )
                            {
                              const int status = valueNode->GetAttribute( WideString("status") );
                              const int value = StrToInt( valueNode->Text );
                              if( RTDBWrite )
                              {
                                map< pair<int, int>, int >::iterator i = link.find( make_pair( pointCode, channelCode ) );
                                if( i!=link.end() )
                                {
                                  (*RTDBWrite)( Date->DateInterval.first + time, (*i).second, value, status );
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      RTDBWrite->Flush();
    }

    Древний legacy-код на БорландЦэпэпэБыдлере, обнаруживаемый на текущей работе (почти госпредприятие), выглядит в основной своей массе примерно так. Новый код на C# чуть получше, но в целом тоже жуткое мракобесие.
    Сил больше нет работать с подобным, увольняюсь и ищу норм работу.

    invi, 15 Февраля 2012

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

    +999

    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
    #include <iostream>
    #include <algorithm>
    #include <stdlib.h>
    
    const size_t MB = 1024*1024;
    size_t MOD = 0;
    
    unsigned char uniqueNumber () {
      static unsigned char number = 0;
      return ++number % MOD;
    }
    
    int main(int argc, char** argv) {
      if (argc < 3) {
        return 1;
      }
    
      size_t BLOCK_SIZE = atoi(argv[1]) * MB;
      MOD = atoi(argv[2]);
    
      unsigned char* garbage = (unsigned char *) malloc(BLOCK_SIZE);
    
      std::generate_n(garbage, BLOCK_SIZE, uniqueNumber);
      std::sort(garbage, garbage + BLOCK_SIZE);
    
      free(garbage);
    
      return 0;
    }

    http://habrahabr.ru/blogs/cpp/138132/

    It makes me cry. Понятно, что это всего лишь демонстрационный пример. Но все таки это не оправдание. Итак, начнем по порядку с самого худшего:
    1. Сишные malloc/free вперемешку с STL-алгоритмами. WTF? Зачем?
    2. Глобальная переменная? Автор не осилил хотя бы bind? Который, к тому же, уже давно std::bind.
    3. Uppercase для локальной переменной.
    4. Отступ в джва пробела.

    invi, 15 Февраля 2012

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

    +997

    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
    void TexQ::Move()
    {
    	mx = quad.v[0].x;
    	my = quad.v[0].y;
    	if(hge->Input_GetKeyState(HGEK_RBUTTON) || hge->Input_KeyDown(HGEK_LBUTTON))
    	{
    		hge->Input_GetMousePos(&nx, &ny);
    		move = true;
    		sx = GetPositionX();
    		sy = GetPositionY();
    		subx = nx - sx;
    		suby = ny - sy;
    
    		if ( abs(subx) > abs(suby) ) 
    		{
    			iter = abs(subx);
    			ms = subx;
    			subx = (subx < 0) ? -1.0f : 1.0f;
    			suby = (suby < 0 ) ? suby/abs(ms) : abs(suby/ms);
    		}
    		else 
    		{
    			iter = abs(suby);
    			ms = suby;
    			suby = (suby < 0) ? -1.0f : 1.0f;
    			subx = (subx < 0 ) ? subx/abs(ms) : abs(subx/ms);
    		}
    	}
    
    	if (move) 
    	{	
    		if (iter >= shift)
    		{
    			iter-=shift;
    			this->SetPosition(
    				GetPositionX() + subx * shift, 
    				GetPositionY() + suby * shift);
    		}
    		else
    		{
    			this->SetPosition(nx , ny);
    			move = false;
    		}
    
    	}
    
    }

    Хреновый из меня математик. Этот метод втыкается в функцию фрейминга. И текстура едет по прямой туда, куда мышью тыкнешь.
    Позже узнал, как можно тригонометрией в 5 строк написать такую же )

    idec, 14 Февраля 2012

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    dData->RowCount++;
    
             for (int i = 0; i < dData->RowCount - 1; i++)
                   for (int j = 0; j < dData->ColumnCount; j++)
                        dData->Rows[i]->Cells[j]->Value = dData->Rows[i + 1]->Cells[j]->Value;

    Мучил седня DataGridView, при dData->RowCount++ создавалась новая строчка в таблице, но только сверху. Остальное съезжало вниз на 1 ячейку. Я боролся полчаса с этим, пока не объяснил проблему товарищу. он предложил свой вариант всего кода:
    dData->Rows->Add();
    :DDDD

    idec, 14 Февраля 2012

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

    +1013

    1. 1
    if (!done && (done = true)) setlocale(LC_CTYPE, "");

    из свежих ворнингов компилера.

    Dummy00001, 14 Февраля 2012

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

    +148

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    vector<long long> fib;
    	for
    	(
    		long long a=1,b=1;
    		b=a+b,a=a+b,a>0&&b>0;
    		cout<<b<<" "<<a<<endl,
    		fib.push_back(b),
    		fib.push_back(a)
    	);

    Just outputting fibonacci numbers as pairs and storing them in a vector...

    wyand, 14 Февраля 2012

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

    +997

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    for (int z=NewArray[y-1];z<(NewArray[y]-1);z++)
                    {
                      AnsiString ts = IntToStr(z+1);
                      int inum = -1;
                      try{
                        inum = StrToInt(ts);
                      } catch(...) {}
    ..... //дальше inum не используется
                    }

    Завис надолго. Так и не понял, зачем автор преобразовывает ts обратно

    dm-ua, 10 Февраля 2012

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