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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void CDiagram::readDomElement( const QDomElement & de )
    {
    // ...
            QString sstratum = de.attribute( "stratum", "1" );
            bool ok = false;
            int istratum = sstratum.toInt( &ok );
            setStratum( ok ? istratum : CTSWConfig::m_SyncStratum );
    // ...
    }

    Парсинг xml конфигов, код не мой, но надо переделывать.

    OlegUP, 18 Декабря 2015

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

    +3

    1. 1
    2. 2
    3. 3
    try{
          throw Exception();
    }

    Мне в сонном бреду пришла мысль, а нахера обязательный catch?
    finally везде необязательно.
    try{ //исключения не пройдут
    }
    //вполне по крестоблядски

    3.14159265, 15 Декабря 2015

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

    0

    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
    #include <iostream>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    #include <stdio.h>
     
    std::vector<int> A, B, C;
     
    void build(const std::vector<int> A, int k, int razmer){
            int n = razmer;
            B.resize(n);
            C.resize(n);
            B.front() = A.front();
            C.back() = A.back();
     
            k--;
     
            for(int i1(1), i2(n - 2); i1 < n; i1++, i2--){
                    B[i1] = (i1 % k) ? std::max(A[i1], B[i1 - 1]) : A[i1];
                    C[i2] = ((i2 + 1) % k) ? std::max(A[i2], C[i2 + 1]) : A[i2];
            }
    }
     
    int main(){
            int m, count;
            A.resize(100001);
            scanf("%d", &m);
            count = 0;
     
            while(true){
                    scanf("%d", &A[count]);
                    if(A[count] == -1) break;
                    count++;
            }
     
            build(A, m, count);
            int l = 0;
            while(count - 1 >= m){
                    printf("%d\n", std::max(C[l], B[l + m - 1]));
                    l++;
            }
            return 0;
    }

    Код, реализующий поиск максимума по подотрезках последовательности чисел. Если непонятно, то тут строится дерево отрезков, и потом с ним происходит какая-то ебола. Красивое решение получается при использовании стандартного алгоритма поиска максимума в очереди за O(1) при помощи двух стеков.

    HiewMorjowie, 12 Декабря 2015

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

    −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
    try {
        f();
    }
    catch(...) {
        std::cout << "f() throw\n";
    }
    try {
        g();
    }
    catch(...) {
        std::cout << "g() throw\n";
    }
    try {
        k();
    }
    catch(...) {
        std::cout << "k() throw\n";
    }
    // etc ...

    absolut, 11 Декабря 2015

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

    +11

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    void Aligner::set_genomic_sequences(vector< pair <string,string> > nt_genomic_seq){
    	this->nt_genomic_sequences = *(new forward_list<pair<string,string>>);
    	this->int_genomic_sequences = *(new forward_list<pair<string,string>>);
    	for(vector<pair<string,string>>::const_iterator iter = nt_genomic_seq.begin() ; iter != nt_genomic_seq.end() ; iter++){
    		nt_genomic_sequences.emplace_front((*iter).first,(*iter).second);
    		int_genomic_sequences.emplace_front((*iter).first , nt2int((*iter).second));
    	}
    }

    Типичный академический код из https://bitbucket.org/yuvalel/repgenhmm. Могу только предположить, что авторы скопипастили код из Java, а потом разыменовывали указатели, пока не скомпилировалось.

    Yuuri, 11 Декабря 2015

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class widget {};
    class gadget {};
    class bobo {};
    
    int main()
    {
        widget w(gadget(), bobo()); //Прототип функции или переменная? хмм
    
        return 0;
    }

    хмм...

    CriDos, 07 Декабря 2015

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

    +10

    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
    template <int N> void f(int v)
    {
        (void *)v;
    }
    
    int main()
    {
        int s = 123;
        int k = 1234;
        
        f<11>(k);
        s<11>(k);
        
        return 0;
    }

    Плюсы, такие плюсы.

    CriDos, 07 Декабря 2015

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

    0

    1. 1
    2. 2
    3. 3
    if ((*entry_it)->flags & (kNoAntialiasRenderFlag == kNoAntialiasRenderFlag)) {
        ...
    }

    Fai, 02 Декабря 2015

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

    +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
    typedef std::map<std::string, WORD> Values;
    
    struct Less {
    	bool operator()(Values::value_type const& left
    	, Values::value_type const& right) const {
    	   if (right.second == TEMPERATURE_UNKNOWN 
    		  || left.second == TEMPERATURE_UNKNOWN) {
    			 return false;
    	   }
    	   short const signed_left = *reinterpret_cast<short const*>(&left.second);
    	   short const signed_right = *reinterpret_cast<short const*>(&right.second);
    	   bool const result = signed_left < signed_right;
    	   return result;
    	}
    };

    Строки 10 и 11.
    20+ опыта в С++ у чувачка.

    blackhearted, 21 Ноября 2015

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

    +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
    template<size_t n>
    struct counterNumber {
        char data[n+1];
    };
     
    template<size_t index, size_t val>
    counterNumber<val> magic(counterNumber<index>, counterNumber<val>);
     
    #define COUNTER_READ() \
        (sizeof( \
            magic(counterNumber<1>(), \
            	magic(counterNumber<2>(), \
            		magic(counterNumber<4>(), \
            			magic(counterNumber<8>(), \
            				magic(counterNumber<16>(), \
            					magic(counterNumber<32>(), \
            						magic(counterNumber<64>(), \
            							magic(counterNumber<128>(), counterNumber<0>())))))))))-1)
     
    #define COUNTER_INC() \
        counterNumber<COUNTER_READ()+1> magic( \
            counterNumber<(COUNTER_READ()+1)&~COUNTER_READ()>, \
            counterNumber<(COUNTER_READ()+1)&COUNTER_READ()>)
     
    #include <iostream>
    using namespace std;
    #define TO_STRING(x) #x
     
     
    #define REG_FUNCTIONAL(headFunction) \
        template<> \
        constexpr auto foo< COUNTER_READ() >() \
        { \
            return TO_STRING(headFunction); \
        } \
        COUNTER_INC(); \
        headFunction
     
    template<size_t n>
    constexpr auto foo(void){return "";}
     
     
    REG_FUNCTIONAL(void function(int a)){(void)a;}
    REG_FUNCTIONAL(void function1(int a)){(void)a;}
     
     
    	// your code goes here
    template<size_t n>
    std::string callFoo()
    {
        return std::string(foo<n>())+callFoo<n-1>();
    }
     
    template<>
    std::string callFoo<0>()
    {
        return std::string(foo<0>());
    }
     
    int main() {
    	std::cout<<callFoo<COUNTER_READ()-1>();
    	return 0;
    }

    https://ideone.com/bASDDc

    IKing, 21 Ноября 2015

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