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

    +3

    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
    const char _LETTERS[] =
    "000000000000000000000000000000000000000000000000000000000000000001111111111<...>";
    const char _DIGITS[] =
    "000000000000000000000000000000000000000000000000111111111100000000000000000<...>";
    const char _CONTROL_CHARS[] =
    "111111111111111111111111111111110000000000000000000000000000000000000000000<...>";
    const char _PUNCT_CHARS[] =
    "000000000000000000000000000000000111011111101111000000000011000110000000000<...>";
    const char _SEP_CHARS[] =
    "000000000000000000000000000000001000000000000000000000000000000000000000000<...>";
    const char _SYM_CHARS[] =
    "000000000000000000000000000000000000100000010000000000000000111000000000000<...>";
    
    #define min(i,l,I) (((i) < (l)) ? (((i) < (I)) ? (i) : (I)) : (((l) < (I)) ? (l) : (I)))
    
    bool CharIsLetter(wchar_t c) {
      return _LETTERS[c] != L'0';
    }
    bool CharIsDigit(wchar_t c) {
      return _DIGITS[c] != L'0';
    }
    bool CharIsControl(wchar_t c) {
      return _CONTROL_CHARS[c] != L'0';
    }
    bool CharIsPunctuation(wchar_t c) {
      return _PUNCT_CHARS[c] != L'0';
    }
    bool CharIsSeparator(wchar_t c) {
      return _SEP_CHARS[c] != L'0';
    }
    bool CharIsSymbol(wchar_t c) {
      return _SYM_CHARS[c] != L'0';
    }

    Лёшенька Кондратьев учится оптимизации

    groser, 25 Декабря 2015

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

    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
    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
    // channel.h
    
    #pragma once
    
    namespace AMQP {
    
    class Channel
    {
    private:
        std::shared_ptr<ChannelImpl> _implementation;
    
    public:
        Channel(Connection *connection) : _implementation(new ChannelImpl()) 
        {
            // attach the connection to the channel
            _implementation->attach(connection);
        }
        
        Channel(const Channel &channel) = delete;
    
        virtual ~Channel() 
        {
            // close the channel (this will eventually destruct the channel)
            _implementation->close();
        }
    
        //...
    };
    
    // ---------------------------------------------------------
    // amqpcpp.h
    
    /**
     *  AMQP.h
     *
     *  Starting point for all includes of the Copernica AMQP library
     *
     *  @documentation public
     */
    
    #pragma once
    
    // base C++ include files
    #include <vector>
    #include <string>
    #include <memory>
    #include <map>
    //...
    
    // base C include files
    #include <stdint.h>
    #include <math.h>
    
    // forward declarations
    #include <amqpcpp/classes.h>
    
    // utility classes
    #include <amqpcpp/endian.h>
    #include <amqpcpp/buffer.h>
    #include <amqpcpp/bytebuffer.h>
    //...
    
    // amqp types
    #include <amqpcpp/field.h>
    #include <amqpcpp/numericfield.h>
    #include <amqpcpp/decimalfield.h>
    #include <amqpcpp/stringfield.h>
    //...
    
    // envelope for publishing and consuming
    #include <amqpcpp/metadata.h>
    #include <amqpcpp/envelope.h>
    #include <amqpcpp/message.h>
    
    // mid level includes
    #include <amqpcpp/exchangetype.h>
    #include <amqpcpp/flags.h>
    #include <amqpcpp/callbacks.h>
    #include <amqpcpp/deferred.h>
    #include <amqpcpp/deferredconsumer.h>
    #include <amqpcpp/deferredqueue.h>
    #include <amqpcpp/deferreddelete.h>
    #include <amqpcpp/deferredcancel.h>
    #include <amqpcpp/deferredget.h>
    #include <amqpcpp/channelimpl.h>
    #include <amqpcpp/channel.h>
    //...

    https://github.com/CopernicaMarketingSoftware/AMQP-CPP

    scp, 23 Декабря 2015

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

    −1

    1. 1
    #define GUIDSTR(s) __uuidof(class DECLSPEC_UUID(s) __guid_##__COUNTER__)

    Может можно покороче?

    Ccik, 22 Декабря 2015

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

    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
    if( sync_ip_index < 0 && result() ) {
                QString tmp = tr(", нет синхронизации");
                addResultMessage( false, p->dev(), tmp);
                p->dev()->setState( CDiagramObject::e_Warning );
                setResult( false );
            }
            else if ( sources_from_xml.indexOf( sources_from_ntpq[ sync_ip_index ] ) < 0) {
                // ( ( (sync_ip_index >= 0)  ? ( sources_from_xml.indexOf( sources_from_ntpq[ sync_ip_index ] ) < 0 ) : false ) )  {
                // (p1 ( p2               )    ( p3                      ( f1                                 )                 )
                // p1..3 - predicates
                // Check sync_ip_index >= 0 (p2)
                //  true, then
                //    find sync source ip in list filled from xml config , and if there is finded, (p3) are true, else (p3) are false, and then (p1) will be false
                //  false, then
                //    (p1) will be false
                // This construction for one string check syncronized source ip for host, if host not synchronized
                QString tmp = tr(", хост синхронизирован с источником не указанным в схеме");
                addResultMessage( false, p->dev(), tmp);
                p->dev()->setState( CDiagramObject::e_Warning );
                setResult( false );
            }

    Под конец рабочего дня уже поехала крыша, см. комментарии.

    OlegUP, 22 Декабря 2015

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    auto id = qobject_cast<QStandardItemModel *>(ui->cbxDevice->model())
                            ->item(ui->cbxDevice->currentIndex(),
                                   RemoteDev::Constants::DEV_ID_COLUMN)
                            ->data(RemoteDev::Constants::DEV_ID_ROLE);

    Q(Styled)ItemDelegate::setModelData, достаем данные из модели комбобокса: другая колонка, кастомная роль. Жиза :(

    Elvenfighter, 20 Декабря 2015

    Комментарии (1)
  6. 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)
  7. C++ / Говнокод #19184

    +3

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

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

    3.14159265, 15 Декабря 2015

    Комментарии (20)
  8. 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)
  9. 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)
  10. 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)