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

    +175

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(v.isArray)value->setText("Array");
        else value->setText(v.value.value("value").value<QString>());
        if(v.value.value("color",QColor()).value<QColor>()!=QColor())
        {
            value->setBackgroundColor(v.value.value("color").value<QColor>());
        }

    Value, value, value, value, value, value, value ...

    petersvp, 26 Мая 2011

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

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    class TTestLib
    {
    public:
      char* Name; 
      unsigned int TotalTime; 
    
      TTestLib(char* AName): TotalTime(0), Name(AName) {}
    ...
    }

    char* Name - убило.

    Try, 25 Мая 2011

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

    +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
    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
    class AnotherDammLoggerClass {
    
    public:
    
      // ...
      
      static inline char *strtime()
      {
        // method is twice as fast as strftime)
        static const int ASCII_OFFSET=48;
        static char buffer[32]="";
        struct timeval tv;
        struct tm *lt;
    
        if ( 0 == gettimeofday(&tv,NULL) )
        {
          lt=localtime(&tv.tv_sec);
    
          int i=0;
    
          /* year */
          buffer[i++]=(lt->tm_year%100/10)+ASCII_OFFSET;
          buffer[i++]=(lt->tm_year%10)+ASCII_OFFSET;
          /* month */
          buffer[i++]=((lt->tm_mon+1)/10)+ASCII_OFFSET;
          buffer[i++]=((lt->tm_mon+1)%10)+ASCII_OFFSET;
          /* day */
          buffer[i++]=(lt->tm_mday/10)+ASCII_OFFSET;
          buffer[i++]=(lt->tm_mday%10)+ASCII_OFFSET;
          /* separator */
          buffer[i++]='.';
          /* hours */
          buffer[i++]=(lt->tm_hour/10)+ASCII_OFFSET;
          buffer[i++]=(lt->tm_hour%10)+ASCII_OFFSET;
          /* minutes */
          buffer[i++]=(lt->tm_min/10)+ASCII_OFFSET;
          buffer[i++]=(lt->tm_min%10)+ASCII_OFFSET;
          /* seconds */
          buffer[i++]=(lt->tm_sec/10)+ASCII_OFFSET;
          buffer[i++]=(lt->tm_sec%10)+ASCII_OFFSET;
          /* separator */
          buffer[i++]='.';
          /* microseconds */
          buffer[i++]=(((tv.tv_usec)%1000000)/100000)+ASCII_OFFSET;
          buffer[i++]=(((tv.tv_usec)%100000)/10000)+ASCII_OFFSET;
          buffer[i++]=(((tv.tv_usec)%10000)/1000)+ASCII_OFFSET;
          buffer[i++]=(((tv.tv_usec)%1000)/100)+ASCII_OFFSET;
          buffer[i++]=(((tv.tv_usec)%100)/10)+ASCII_OFFSET;
          buffer[i++]=(((tv.tv_usec)%10))+ASCII_OFFSET;
          /* delimiter */
          buffer[i++]=(char)0;
        }
        else
        {
          strcpy(buffer,  "<no time>");
        }
        return buffer;
      }
      // ....
    }

    оптимизируем производительность. коммент "twice as fast as strftime" порадовал: вместо того что бы редундантные вызовы поубирать, давайте ручками перепишем. для пущей красоты сделано inline (и еще скапипазджено в три других места проекта).

    потому что в логгере strftime() наверное жутко тормозил - например по сравненю с записью сообщений на диск.......

    Dummy00001, 23 Мая 2011

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

    +166

    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
    #include <dir.h>//ДЛЯ ОПРЕДЕЛЕНИЯ mkdir(ИМЯ ПАПКИ)
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <alloc.h>
    #include <string.h>
    #include <iostream.h>
     int ndig(char x)
    {if('0'<=x&&x<='9')return 0;else return 1;}
    // СТРОКА ВЕДОМОСТИ ДЛЯ ОДНОГО СТУДЕНТА
     struct stud
    {char fio[122];int b[9],ns
    static int nc
    ,nd;
     void out(FILE*fo);stud(){fio[121]=0;}
    stud(FILE*fi);
    stud(stud&s){*this=s;}
    }; //end of stud body
     int stud::nc=44;
     int stud::nd=5;
     stud::stud(FILE *fi)
    {fscanf(fi,"%i ",&ns); fgets(fio,nc,fi);
    for(int j=1;j<=nd;++j)fscanf(fi,"%i",&b[j]);}
    
     void stud::out(FILE*fo=stdout)
    {fprintf(fo,"%3i ",ns);
    fputs(fio,fo); for(int j=1;j<=nd;++j)
    {if(b[j]>=0&&b[j]<6) fprintf(fo,"%3i",b[j]);
    else fprintf(fo,"   ");}
    fprintf(fo,"\n"); if ( fo==stdout) getch();
    }//end of stud
    
    //ВЕДОМОСТЬ ОДНОЙ ГРУППЫ
    //("МАССИВ СТРОК" ДЛЯ ОТДЕЛЬНЫХ СТУДЕНТОВ)
    
     struct grup{ stud**st;//"МАССИВ СТУДЕНТОВ"
    FILE*fi;char title[3][122]//"ШАПКА" ВЕДОМОСТИ
    ,sf[77];
    
    int ms;//ЧИСЛО СТУДЕНТОВ
    void nw();//ПАМЯТЬ ДЛЯ СТУДЕНТОВ
    void out(char*sf); void out(FILE*fo);
    grup(grup&g);grup(int fms){ms=fms; nw();}
    grup(char*sf); grup&operator=(const grup&g);
    void deg();~grup(){deg();} grup(); };
    //end of grup body
     grup::grup(){ms=0;st=0;fi=0;
    for(int j=0;j<3;++j)memset(title[j],0,122);}
    
     void grup::nw()
    {st=new stud*[ms+1];
    if(!st){cout<<"\nst=0  grup::nw()\n";exit(1);}
    for(int j=0;j<=ms;++j)
    {st[j]=new stud;
    if(!st){cout<<"\nst[j]=0\n";exit(1);}
    }}
     grup::grup(char*fsf)
    {strcpy(sf,fsf); char s[77]="\n"; int j;
    fi=fopen(sf,"rt");
    if(!fi)
    {cout<<"\n0)fi=0,sf="<<sf;getch();exit(1);}
    ms=0; while(!feof(fi)){fgets(s,77,fi);++ms;}
    ms-=3; fclose(fi); fi=fopen(sf,"rt");
    if(!fi){cout<<"\nfi\n";exit(1);}
    for(j=0;j<3;++j) fgets((title[j]),77,fi);
    
    //ВВОД "СТУДЕНТОВ" ИЗ ФАЙЛА sf
    nw();for(j=1;j<=ms;++j){stud stj(fi);*st[j]=stj;}
    fclose(fi);
    }
     grup&grup::operator=(const grup&g)
    {if(this==&g)return*this; int j; this->deg();
    fi=g.fi; strcpy(sf,g.sf); ms=g.ms;
    nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
    for(j=0;j<3;++j)strcpy(title[j],g.title[j]);
    return*this;
    }
     grup::grup(grup&g)
    {for(int j=0;j<3;++j)strcpy(title[j],g.title[j]);
    ms=g.ms; strcpy(sf,g.sf);
    nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
    }
     void grup::deg()
    {if(st) {for(int j=0;j<=ms;++j)
    if(st[j]){delete st[j];st[j]=0;}delete[]st;st=0;}
    }
     void grup::out(FILE*fo=stdout)
    {if(fo==stdout)cout<<'\n'; int j=0;
    for(;j<3;j++) fputs(title[j],fo);
    
    for(j=1;j<=ms;j++) st[j]->out(fo);
    }
     void grup::out(char*sf)
    {FILE*fo=fopen(sf,"wt");
    if(!fo){cout<<"\nfo=0\n";exit(1);}
    out(fo); fclose(fo);
    } //end of grup

    Кусок кода с "базовыми классами" для курсовой работы в непоследнем университете Петербурга. Данные "классы" потом по заданию предлагается всячески расширять.
    А потом жалуемся, что студенты ничего не умеют. А кто ж их учит?

    CTRSpirit, 23 Мая 2011

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

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    inline void bubbleSort3(int* data)
    {
        int temp;
    
        if (data[0] > data[1])
        { temp = data[0]; data[0] = data[1]; data[1] = temp; }
        if (data[1] > data[2])
        { temp = data[1]; data[1] = data[2]; data[2] = temp; }
        if (data[0] > data[1])
        { temp = data[0]; data[0] = data[1]; data[1] = temp; }
    };

    Пример "не верной" сортировки. Найдено на просторах Интернета.

    Говногость, 17 Мая 2011

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

    +173

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    NNLayer::~NNLayer()
    {
    	// call Initialize(); makes sense if you think
    	
    	Initialize();
    }

    Отсюда: http://www.codeproject.com/KB/library/NeuralNetRecognition.aspx

    eigenein, 16 Мая 2011

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

    +164

    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
    //----------------------------------------------------------------------------
    void TChimesMinigame::InventoryEndDrag(str aId)
    { 
      TSceneObject * drag_object = getScene(1)->FindObject(aId);
    
      if (!drag_object) 
      {
        iInventory->CheckEndDrag(NULL);
        return; 
      }
        
      iInventory->CheckEndDrag(NULL);
    }
    //----------------------------------------------------------------------------

    w100, 15 Мая 2011

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

    +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
    bool CSomeClass::Init( int argc, wchar_t* argv[] )
    
    {
    
          bool isOk = true;
    
          bool goOn = true;
    
          for( int i = 0; isOk && goOn; ++i ) {
    
                switch( i ) {
    
                      case 0:
    
                            isOk = checkCommandLine( argc, argv );
    
                            break;
    
                      case 1:
    
                            isOk = checkFileExistence();
    
                            break;
    
                      case 2:
    
                            isOk = initFiles();
    
                            break;
    
                      default:
    
                            goOn = false;
    
                }
    
          }
    
          return isOk;
    
    }

    w100, 14 Мая 2011

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

    +161

    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
    while(fgets(buf,4095,in)){
    
      if(strcmp(buf,"nodes")){while(fgets(buf,4095,in)){ 
      if(strcmp(buf,"end")){ 
        m->mb=mb; 
        m->bv=new vec3f[mb];
        m->ba=new vec3f[mb]; 
        m->p=new int[mb]; 
        a->max_b=mb; 
        a->fr=new TMAFrame[mb];a->Initfr();    
        break; 
      }; 
      mb++; 
      };}; 
    };

    Взято с одного форума по программированию. От автора:
    Короче говоря при загрузке модели SMD возникает ошибка при чтении , точнее подсчёте костей :

    Try, 14 Мая 2011

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

    +164

    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
    template < int Order, typename T >
    struct PrefixSum {
      static inline void update ( T* a ) throw () { *a += *(a-1); PrefixSum < Order-1, T > :: update( a+1 ); }
    };
    
    template < typename T >
    struct PrefixSum < 1,T > {
      static inline void update ( T* a ) throw () { *a += *(a-1); }
    };
    
    template < int P, int N, int Condition = 0 > 
    struct Bpn {
      enum { value = N * ( Bpn < P-1, N-1, (N > P) > :: value - Bpn < P-1, N, (N > P-1) > :: value ) };
    };
    
    template < int P, int N > struct Bpn < P, N, !0 > { enum { value = 0 }; };
    template < int P >        struct Bpn < P, 0,  0 > { enum { value = P ? 0 : 1 }; };
    template < int P >        struct Bpn < P, 1,  0 > { enum { value = P & 1 ? 1 : -1 }; };
    
    template < typename Ta, typename Tb, bool C > struct IfThenElse;
    template < typename Ta, typename Tb > struct IfThenElse < Ta, Tb, true  > { typedef Ta TRes; };
    template < typename Ta, typename Tb > struct IfThenElse < Ta, Tb, false > { typedef Tb TRes; };
    
    template < int K, int I = 1 >
    struct MomentSeries {
      typedef typename IfThenElse < MomentSeries<K,I+1>, MomentSeries<K,K>, (I<K) >::TRes SubT;
      static inline double accumulate ( double const* psum ) throw () {
        return Bpn < K, I > :: value * psum [ I + 1 ] + SubT :: accumulate ( psum );
      }
    };
    
    template < int K >
    struct MomentSeries < K, K > {
      static inline double accumulate ( double const* psum ) throw () {
        return Bpn < K, K > :: value * psum [ K + 1 ];
      }
    };
    
    template < int Order >
    struct MomentLoop {
      static inline void assign ( double *moments, size_t momentStride, double const* psum ) throw() {
        *(moments - momentStride) = MomentSeries < Order-1 > :: accumulate ( psum );
        MomentLoopAssign < Order-1 > :: assign ( moments - momentStride, momentStride, psum ); 
      }
    };
    
    template <>
    struct MomentLoop < 1 > {
      static inline void assign ( double *moments, size_t momentStride, double const* psum ) throw() {
        moments [ 0 ] = MomentSeries < 1, 1 > :: accumulate ( psum );
        *(moments - momentStride) = psum [ 1 ];
      }
    };
    
    /**
     * Function computes a series of geometric moments by prefix summation method:
     * Zhou F., Kornerup P. Computing Moments by Prefix Sums. // VLSI Signal Proc. - 2000. - 25. - P. 5 - 17.
     * @param data is first data elemet address.
     * @param ndataItems is number of data items.
     * @param dataStride is the number of elements between two neighbor data items, 
     *        in case of simple array dataStride is equal to 1.
     * @param moments is address of 0-order moment.
     * @param momentStride is number of elements between two neigbor moment items,
     *        in case of consequtive moments placement, momentStride is equal to 1.
     */
    
    template < int Order, class OutPolicy >
    inline void psmoment ( double const* data, 
                           size_t const  ndataItems,
                           size_t const  dataStride,
                           double*       moments,
                           size_t const  momentStride ) throw() { 
      double psum [ Order+1 ] = { 0 };
      // Initialize prefix sum
      for ( size_t i = ndataItems, j = ndataItems * dataStride; i; ) {
        --i; j -= dataStride; psum [ 0 ] = data [ j ];
        PrefixSum < Order, double > :: update ( psum+1 );
      }
      // convert psum to moment values 
      OutPolicy :: assign ( moments + Order * momentStride, momentStride, psum );
    }

    Вы - тестовая площадка, перед написанием статьи в пфп ;)

    ngry, 12 Мая 2011

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