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

    +163

    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
    typedef char char_array_2 [2] ;
    typedef char char_array_3 [3] ;
    typedef char char_array_22[32];
    
    /* ... */
    
    if( 0 == (purpose          = new char_array_3[ dArraySize ]  ) )
    {
       ALLOC_ERROR();
    }
    
    if( 0 == (mode             = new char_array_3[ dArraySize ]  ) )
    {
       ALLOC_ERROR();
    }
    
    if( 0 == (state            = new char_array_2[ dArraySize ]  ) )
    {
       ALLOC_ERROR();
    }
    
    if( 0 == (referencedate    = new char_array_22[ dArraySize ] ) )
    {
       ALLOC_ERROR();
    }
    
    /* и еще десяток в таком же стиле */

    С++ в (болгарские) массы. и пусть только попробуют сказать что мы ошибок выделения памяти не обрабатываем.

    ЗЫ самый прикол что код который этой памятью пользуется 100% совместим с std::vector<std::string>. хотя я бы лично все строки в структуру загнал (и структуры в вектор) бо 10+ массивов это говно.

    Dummy00001, 12 Августа 2010

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

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    foo(int objType)
    {
      std:string sObjType;
      char outStr[256];
      memset(outStr,NULL,256);
      sprintf(outStr,"0x%x",(unsigned int)objType);
      sObjType = outStr;
      //…
      std::ostringstream str;
      str << "Ready: list of objects, type " << sObjType;
      TRACE(str.str());
    }

    belca, 10 Августа 2010

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

    +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
    bool Pl::load(QString &path){
        if(path.isEmpty()){
            return false;
        }
        QFile file(path);
        if(!file.exists()){
            return false;
        }
        file.open(QIODevice::ReadOnly | QIODevice::Text);
        file.setTextModeEnabled(true);
        if(!file.isOpen()){
            return false;
        }
        QString str;
        QString title;
        while(file.bytesAvailable() > 0){
        str = QString::fromUtf8(file.readLine(1024).trimmed());
            if(str.isEmpty()){
                continue;
            }
            else{
                if(str.at(0) == '#' && title.isEmpty()){
                    if(str.left(10) == "#EXTINF:0,"){
                        title = str.mid(10);
                    }
                    else{
                        title = "";
                    }
                }
            }
            if(this->addTrack(str, title)){
                title = "";
            }
            else{
                QUrl _u(str);
                if(this->addURL(_u, title)){
                    title = "";
                }
            }
        }
        file.close();
        return true;
    }

    Некий кусок кода для парсинга m3u от товарища POPSul

    cutwater, 07 Августа 2010

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

    +157

    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
    struct Vertex
    {
    	float x, y, z;
    	float tu0, tv0;
    } vertices[20000] = 
    {
    	-X,  0,  Z, 0, 0,
    	 X,  0,  Z, 0, 0,
    	-X,  0, -Z, 0, 0, 
    	 X,  0, -Z, 0, 0,
    
    	 0,  Z,  X, 0, 0,
    	 0,  Z, -X, 0, 0,
    	 0, -Z,  X, 0, 0,
    	 0, -Z, -X, 0, 0,
    
    	 Z,  X,  0, 0, 0,
    	-Z,  X,  0, 0, 0,
    	 Z, -X,  0, 0, 0,
    	-Z, -X,  0, 0, 0,
    };

    Kirinyale, 06 Августа 2010

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

    +151

    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
    std::string wbfunc(std::string& hash)
    {
       std::string line;
       std::ifstream f("/home/hromjo/q");
       int l = 0;
       while (std::getline(f, line))
       {
          std::cout << "Перебор: " << l << "паролей." << "\n";
          l++;
          if (md5(line) == hash)
          {
            return line;
            break;
          }
       }
    }

    Возможно слегка не в тему.
    Писал я и хочу проверить, говнокод ли это.
    И что можно исправить в этом говнокоде.

    hromjo, 04 Августа 2010

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

    +156

    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
    int main() {
    	srand(time(NULL));
    	for (int k=1;k<=75;k++) {
    		char file_name[] = "input      ";
    		if (k<10) {file_name[5]='0'; file_name[6]=(k+'0'); } else
    		{
    			file_name[5]=(k/10+'0'); file_name[6]=(k%10+'0');
    		}
    		file_name[7]='.'; file_name[8]='t'; file_name[9]='x'; file_name[10]='t';
    		freopen(file_name,"wt",stdout);
    		n=rand()%500+1;
    		m=rand()%500+1;
    		cout << n << " " << m << endl;
    		for (i=0;i<n;i++) {
    			for (j=0;j<m;j++)
    				cout << rand()%10000000+1 << " ";
    			cout << endl;
    		}
    	}
    	return 0;
    }

    jfn, 03 Августа 2010

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

    +168

    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
    if(x>=900&&x<1000)
                    {
                            std::cout<<"DCCCC";
                            if(x==901)
                                    std::cout<<"I";
                            else if(x==902)
                                    std::cout<<"II";
                            else if(x==903)
                                    std::cout<<"III";
                            else if(x==904)
                                    std::cout<<"IV";
                            else if(x==905)
                                    std::cout<<"V";
                            else if(x==906)
                                    std::cout<<"VI";
                            else if(x==907)
                                    std::cout<<"VII";
                            else if(x==908)
                                    std::cout<<"VIII";
                            else if(x==909)
                                    std::cout<<"IX";
                            if(x==910)
                            {
                                    std::cout<<"X";
                                    if(x==911)
                                            std::cout<<"I";
                                    else if(x==912)
                                            std::cout<<"II";
                                    else if(x==913)
                                            std::cout<<"III";
                                    else if(x==914)
                                            std::cout<<"IV";
                                    else if(x==915)
                                            std::cout<<"V";
                                    else if(x==916)
                                            std::cout<<"VI";
                                    else if(x==917)
                                            std::cout<<"VII";
                                    else if(x==918)
                                            std::cout<<"VIII";
                                    else if(x==919)
                                            std::cout<<"IX";
                            }
                            else if(x==920)
                            {
                                    std::cout<<"XX";
                                    if(x==921)
                                            std::cout<<"I";
                                    else if(x==922)
                                            std::cout<<"II";
                                    else if(x==923)
                                            std::cout<<"III";
                                    else if(x==924)
                                            std::cout<<"IV";
                                    else if(x==925)
                                            std::cout<<"V";
                                    else if(x==926)
                                            std::cout<<"VI";
                                    else if(x==927)
                                            std::cout<<"VII";
                                    else if(x==928)
                                            std::cout<<"VIII";
                                    else if(x==929)
                                            std::cout<<"IX";
                            }
        //

    Перевод числа <1000 в римские цифры... Единственное, что пришло в голову с утра, тупо перебор всех значений. Соответственно так весь код. Это полный 3.14здец?

    ForEveR, 02 Августа 2010

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

    +148

    1. 1
    Block *** Cells;

    Лаконичная семантика C++.
    Глядишь на код -- и всё понятно: Cells - это указатель массива указателей на массивы указателей объектов класса Block.
    А устно с первого раза хрен выговоришь.

    maniac, 30 Июля 2010

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

    +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
    void shiftOrder(int* _order, int _count, int _column)
    {
        int i=_count-1;
        while ( _order[i]!=_column )
            i--;
    
        _order[_count]=_order[i];
        memcpy( _order+i, _order+i+1, (_count-i)*sizeof(int) );
    
        return;
    }
    
    void returnOrder(int* _order, int _count, int _column)
    {
        int i=0;
        int j=0;
        int order[MAX_COLS];
    
        for ( i=0; i< _count; i++)
        {
            if ( m_ColInfo[i].visible )
            {
                order[j]=i;
                j++;
            }
        }
    
        i=j;
        while ( j<_count )
        {
            if ( _order[i-1]!=_column )
            {
                order[j]=_order[i-1];
                j++;
            }
            i++;
        }
        memcpy(_order, order, MAX_COLS*sizeof(int));
    
        return;
    }

    я знаю, это всё торфяники!1

    ilardm, 30 Июля 2010

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

    +163

    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
    long GetMicroseconds();
    
    CTvoid cLog::GetTime (char * acLocal, time_t tTime)
    {
      struct tm   ltLocalTime;
      struct tm * ptLocalTime;
    
      tTime       = time (NULL);
      ptLocalTime = localtime_r (&tTime, &ltLocalTime);
    
      sprintf(acLocal,"%04d%02d%02d %02d%02d%02d-%06ld",
                       ptLocalTime->tm_year+1900,
                       ptLocalTime->tm_mon+1,
                       ptLocalTime->tm_mday,
                       ptLocalTime->tm_hour,
                       ptLocalTime->tm_min,
                       ptLocalTime->tm_sec,
                       GetMicroseconds());
    
    }
    
    long GetMicroseconds()
    {
        struct timeval timeVal;
    
        if (0 == gettimeofday( &timeVal, NULL ))
            return timeVal.tv_usec;
    
        return -1;
    }
    
    cLog::__Write(...)
    {
        /* ... */
        tTime          = time(NULL);
        GetTime (acDataTime, tTime);
        /* ... */
    }

    R&D дали задание добавить микросекунды ко всем таймстемпам в логах.
    сказано - сделано.
    ну ведь никто не говорил что таймстемпы должны быть еще и консистентными.

    ЗЫ ну и time() надо вызвать раза два-три - для надёжности.

    Dummy00001, 28 Июля 2010

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