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

    +163

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int F(x)
    {
       if (.chto-to) v.push_back(.koe-chto.);
       int ind = somefunc(x);
       for each y in x.childs
          v[ind].res += F(y);
    }

    Не говнокод, но пример того, как из std::vector можно выстрелить себе в ногу

    Комментарий автора кода ( http://codeforces.ru/blog/entry/1719#comment-32824 ):
    такая штука получала крэш на компиляторе жюри, из-за того что сначала вычислялся адрес v[ind].res затем вызывалась снова F, которая пушбекает в вектор v, и может тем самым заставить вектор перевыделить память, тем самым адрес вычисленный ранее становился инвалидным.
    я этот баг долго не мог найти, потомучто студия генерила нормальный код, не вызывающий креша

    burdakovd, 18 Апреля 2011

    Комментарии (6)
  2. Pascal / Говнокод #6390

    +102

    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
    var zaxita, ataka, zaxitacomp, atakacomp, yron, yroncomp: integer;
    begin
    Label3.Caption := IntToStr(healt);
    Label4.Caption := IntToStr(healtcomp);
    If Radiobutton1.Checked = True then
    begin
    zaxita := 1;
    yron := 3;
    end;
    If Radiobutton2.Checked = True then
    begin
    zaxita := 2;
    yron := 2;
    end;
    If Radiobutton3.Checked = True then
    begin
    zaxita := 3;
    yron := 1;
    end;
    If Radiobutton4.Checked = True then ataka := 3;
    If Radiobutton5.Checked = True then ataka := 2;
    If Radiobutton6.Checked = True then ataka := 1;
    zaxitacomp := Random(4);
    atakacomp := Random(4);
    If zaxita <> atakacomp then
    begin
    healt := healt - yron;
    Label3.Caption := IntToStr(healt);
    If healt <= 0 then
    begin
    MessageBeep(48);
    ShowMessage('Вы проиграли. Ваш труп скормят крысам!');
    Close;
    end;
    If zaxitacomp <> ataka then
    begin
    healtcomp := healtcomp - ataka;
    Label4.Caption := IntToStr(healtcomp);
    If healtcomp <= 0 then
    begin
    MessageBeep(48);
    ShowMessage('Вы выйграли! Поздравляю! Теперь можете разграбить своего врага! О, что это?!');
    end;
    end;
    end;
    end;
    end.

    Это оффлайн симулятор игры карнаж. Игра такая игра

    Govnocoder#0xFF, 18 Апреля 2011

    Комментарии (78)
  3. JavaScript / Говнокод #6389

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    <table>
         <form method="post" action="/ololo/onatole.html?step={{if $step eq '2'}}3{{else}}6{{/if}}">
         <tr><td><a id="submit">...
    ....

    фаерфокс отлично парсит такие формы внутри таблиц, jQuery(this).closest('form') тоже возвращает все превосходно

    govno, 18 Апреля 2011

    Комментарии (28)
  4. PHP / Говнокод #6388

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    {{sectionelse}}
                        <script language="javascript">
                          window.location = '/megasection/megapage.html?step='+{{if $step eq '2'}}'3'{{else}}'1'{{/if}};
                        </script>
    {{/section}}

    PHP, Smarty, редиректы уже не в моде

    govno, 18 Апреля 2011

    Комментарии (10)
  5. Куча / Говнокод #6387

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Ошибка: unterminated regular expression literal
    Источник: http://govnokod.ru/media/ddd20ce56acf1d9ebadd126322495087.js?files=jquery.js,jquery.scrollTo.js,govnokod.js,jshighlight/highlight.pack.js&v=4
    Строка 204, символ 158
    Исходный код:
    return curLoop;};var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\

    Это не код, а баг, из-за которого в Firefox'е комментарии не подгружаются, а открываются на отдельной странице.
    Короче, минусуйте.

    nsauk, 18 Апреля 2011

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

    +136

    1. 1
    2. 2
    3. 3
    if (demand.TargetDate == new DateTime())
    {
    }

    abatishchev, 18 Апреля 2011

    Комментарии (23)
  7. Куча / Говнокод #6385

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    /**
     * TODO Document HelloWorld
     * <p />
     *
     * @author Vinod.Jayakumar
     */

    Если тебя, любознательный читатель, заинтересовала валидность такого тега, то, чтобы облегчить тебе поиски:
    http://www.w3.org/TR/html4/struct/text.html#edef-P
    > We discourage authors from using empty P elements. User agents should ignore empty P elements.

    wvxvw, 18 Апреля 2011

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

    +167

    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
    #include <windows.h>
    
    
    
    
    
    struct io
    {
        io()
        {
            SetConsoleTitle(__FUNCSIG__);
        }
        ~io()
        {
            DebugBreak();
        }
    } io_obj;
    
    
    
    
    int main()
    {
    }
    
    typedef void(fn_t)();
    
    #pragma comment(linker, "/merge:.CRT=.rdata")
    
    #pragma data_seg(".CRT$XCA")
    extern "C" fn_t * start[] = {0};
    #pragma data_seg(".CRT$XCZ")
    extern "C" fn_t * finish[] = {0};
    #pragma data_seg()
    
    void call_dtors();
    
    extern "C" void _initterm()
    {
        fn_t **p = start, **q = finish;
        while (p < q)
        {
            if (*p)
                (*p)();
            ++p;
        }
        main();
        call_dtors();
    }
    
    fn_t * dtors[999];
    int c_dtors;
    
    void call_dtors()
    {
        while (c_dtors--)
            dtors[c_dtors]();
    }
    
    extern "C" int atexit(void (__cdecl *func )( void ))
    {
        dtors[c_dtors++] = func;
        return !"unspecified";
    }

    если клепаем что то без CRT и хотим чтоб вызывались
    конструкторы деструкторы статических объектов и хотим свое то
    вот реализация для тех кто этого еще неделал
    https://wasm.ru/forum/viewtopic.php?pid=428250#p428250

    rat4, 17 Апреля 2011

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

    +165

    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
    // 
    // Занимательное программирование C++
    // С.Симонович, Г.Евсеев, 2001
    //
    // Глава 12. Программа учится сочинять
    //
    
    void __fastcall TForm1::FormCreate
                                (TObject *Sender)
    {
      randomize();
      ComboBox1->ItemIndex = 0;
      ComboBox2->ItemIndex = 0;
      ComboBox3->ItemIndex = 0;
    }
    
    
    void __fastcall TForm1::Button1Click
                               (TObject *Sender)
    {
    ComboBox1->ItemIndex = 
                 random(ComboBox1->Items->Count);
    ComboBox2->ItemIndex = 
                 random(ComboBox2->Items->Count);
    ComboBox3->ItemIndex = 
                 random(ComboBox3->Items->Count);
    }

    Это моя первая книгка по Си++
    печалько... тт

    Surendil, 17 Апреля 2011

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

    +149

    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
    //
    // mainwindow.h
    //
    #ifndef MAINMDIWINDOW_H
    #define MAINMDIWINDOW_H
    /* >:0 Эти инклюды хуже, чем говно, чуть менее, чем полностью */
    #include <QMainWindow>
    #include <QMdiArea>
    #include <QMenu>
    #include <QAction>
    #include <QMenuBar>
    #include <QWebView>
    #include <QFile>
    #include <QSignalMapper>
    #include <QDebug>
    #include <QDomDocument>
    #include <QToolBar>
    #include <QButtonGroup>
    #include <QLabel>
    #include <QMdiSubWindow>
    #include <QApplication>
    #include "demoviewer.h"
    #include "theoryviewer.h"
    class MainMDIWindow : public QMainWindow
      { Q_OBJECT
      public:
        /* >:0 Кэп?! */
        //! Выполняет создание и инициализацию окна приложения.
        explicit MainMDIWindow(QWidget *parent = 0);
      signals:
      public slots:
        /* >:0 А ты догадался, что значат эти аргументы? */
        void openDocument(int); void loadPage(int);
        /* >:0 Это невероятно полезные функции */
        void toggleTheoryWindow(bool state) { tw->setVisible(state); }
        void toggleDemoWindow(bool state) { dw->setVisible(state); }
      protected:
        /* >:0 Это на винде не работало, я просто закомментировал.
               Вероятно, правильнее было бы воспользоваться средствами сборки под разные платформы,
               но я невозбранно комметирую-раскомментирую эту строчку каждый раз при сборке */
        inline void paintEvent(QPaintEvent *e)
        { // mdiArea->setBackground(QBrush(QImage(":/images/photo/s200.jpg").scaled(this->size(), Qt::KeepAspectRatioByExpanding)));
          e->accept();
        }
        // ...
        /* >:0 ЭтаПять! См. тело конструктора */
        QString AppWindowTitle;
        // Просмотровщики материала
        DemoViewer * dv; QMdiSubWindow* dw;
        TheoryViewer* tv; QMdiSubWindow* tw;
        bool lockTheory, lockDemo;
        // Хранение информации о документах
        /* >:0 За такое я впредь обещаю безжалостно резать яйца. Даже себе. */
        QVector< QVector< QHash< QString, QString > > > documents;
        QVector< QHash< QString, QString > > *currentDocument;
        // ...
      };
    #endif // MAINMDIWINDOW_H
    
    //
    // mainwindow.cpp
    // Далее следуют отдельные вырезки
    //
    #include "mainmdiwindow.h"
    MainMDIWindow::MainMDIWindow(QWidget *parent) : QMainWindow(parent)
      { /* >:0 Вот зачем нам понадобился атрибут QString AppWindowTitle! */
        AppWindowTitle = tr("ЦВМ «Пламя-КВ» ЗРК С-200ВЭ");
        setWindowTitle(AppWindowTitle);
        // ...
        // Инициализация окон просмотровщиков
        /* >:0 Вы меня понимаете, не? хД */
        tv = new TheoryViewer(); tw = mdiArea->addSubWindow(tv); tw->hide(); tv->setParent(tw); lockTheory = true;
        dv = new DemoViewer(); dw = mdiArea->addSubWindow(dv); dw->hide(); dv->setParent(dw); lockDemo = true;
        // ...
      }
    void MainMDIWindow::openDocument(int id)
      { // ...
        /* >:0 Нижеследующая конструкция читает HTML файл в UTF-8,
               заменяет пути на абсолютные и запихвает получивуюся какуху в QWebView */
        QFile in(textLink); bool t = in.open(QIODevice::ReadOnly | QIODevice::Text);
        tv->setHtml(QString::fromUtf8(in.readAll()).replace(QString("./"), QApplication::applicationDirPath() + '/'));
        in.close();
        // ...
      }

    ИМХО, это МЕГОКОД. И я обещаю больше так никогда не делать ^^
    Вбросы говн в потоковых комментариях, начинающихся с православного смайла >:0

    Surendil, 17 Апреля 2011

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