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

    +63.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
    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
    /* This construction seems to be more optimiser friendly.
           (without it gcc does the isDIGIT test and the *s - '0' separately)
           With it gcc on arm is managing 6 instructions (6 cycles) per digit.
           In theory the optimiser could deduce how far to unroll the loop
           before checking for overflow.  */
        if (++s < send) {
          int digit = *s - '0';
          if (digit >= 0 && digit <= 9) {
            value = value * 10 + digit;
            if (++s < send) {
              digit = *s - '0';
              if (digit >= 0 && digit <= 9) {
                value = value * 10 + digit;
                if (++s < send) {
                  digit = *s - '0';
                  if (digit >= 0 && digit <= 9) {
                    value = value * 10 + digit;
    		        if (++s < send) {
                      digit = *s - '0';
                      if (digit >= 0 && digit <= 9) {
                        value = value * 10 + digit;
                        if (++s < send) {
                          digit = *s - '0';
                          if (digit >= 0 && digit <= 9) {
                            value = value * 10 + digit;
                            if (++s < send) {
                              digit = *s - '0';
                              if (digit >= 0 && digit <= 9) {
                                value = value * 10 + digit;
                                if (++s < send) {
                                  digit = *s - '0';
                                  if (digit >= 0 && digit <= 9) {
                                    value = value * 10 + digit;
                                    if (++s < send) {
                                      digit = *s - '0';
                                      if (digit >= 0 && digit <= 9) {
                                        value = value * 10 + digit;
                                        if (++s < send) {
                                          /* Now got 9 digits, so need to check
                                             each time for overflow.  */
                                          digit = *s - '0';
                                          while (digit >= 0 && digit <= 9
                                                 && (value < max_div_10
                                                     || (value == max_div_10
                                                         && digit <= max_mod_10))) {
                                            value = value * 10 + digit;
                                            if (++s < send)
                                              digit = *s - '0';
                                            else
                                              break;
                                          }
                                          if (digit >= 0 && digit <= 9
                                              && (s < send)) {
                                            /* value overflowed.
                                               skip the remaining digits, don't
                                               worry about setting *valuep.  */
                                            do {
                                              s++;
                                            } while (s < send && isDIGIT(*s));
                                            numtype |=
                                              IS_NUMBER_GREATER_THAN_UV_MAX;
                                            goto skip_value;
                                          }
                                        }
                                      }
    				 }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
    	 }
          }
        }

    Проверка числа в Perl-модуле. Судя по всему стояла задача оптимизировать под что-то.

    Thomas_55, 30 Декабря 2009

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

    +64.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
    int main(int argc, char **argv){
      QApplication app(argc, argv);
      QWebView view;
      view.load(QUrl("http://www.linuxcertif.com/"));
      view.show();
      app.exec();
      QWebSettings::setIconDatabasePath("/tmp");
      QWebSettings::iconForUrl(QUrl("http://www.linuxcertif.com/"));
      QIcon icon = QWebSettings::iconForUrl(QUrl("http://www.linuxcertif.com/"));
      QPushButton button;
      button.setIcon(icon);
      button.show();
      return app.exec();
    }

    смотрим на восьмую строку и понимаем, что она не делает ничего....
    ошибка то мелкая, было бы не смешно, если тока этот код не распологался бы на багтрекере вебикита - https://bugs.webkit.org/show_bug.cgi?id=29440
    еще в вебките забавно, что если в этом семпле седьмую строку переместить сразу за второй, семпл работает...

    LuCiFer, 29 Декабря 2009

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

    +59.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    //и теперь шлём запрос письма
                        reply = QString("<iq type='get' from='%1' to='%2' id='mail-request-%3'>"\
                            "<query xmlns='google:mail:notify' %4 %5/></iq>")
                                .arg(from)
                                .arg(to)
                                .arg(id)
                                .arg((lastCheck.value(QString("%1").arg(account),"")=="")?QString(""):QString("newer-than-time='%1'").arg(lastCheck.value(QString("%1").arg(account))))
                                .arg((lastTid.value(QString("%1").arg(account),"")=="")?QString(""):QString("newer-than-tid='%1'").arg(lastTid.value(QString("%1").arg(account))));
                        stanzaSender->sendStanza(account, reply);

    Раскопано в недрах плагинов к psi:
    Особенно радует шедевральная конвертация int'а в строку при помощи QString("%1").arg(account),"")
    Плюс ко всему комменты на русском в интернациональном проекте это немножко моветон

    Sauron, 29 Декабря 2009

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

    +67.3

    1. 1
    length=length%8==0?0:length+8-length%8;

    пытаемся округлить length до 8 в большую сторону...
    краткость - сестра ... таланта?

    dIsoVi, 24 Декабря 2009

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

    +143.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #define true false
    
    ...
    
    
    #define double int
    
    ...
    
    
    #define TRUE FALSE
    // удачной отладки суки

    4cppMan, 16 Декабря 2009

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

    +146.2

    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
    // Боярский языг.cpp : Defines the entry point for the console application.
    //
    
    // Не догадались, как избавиться от этих некрасивых инклудов :)
    #include "stdafx.h"
    #include <iostream>
    
    использовати площадь какобычно аминь1
    
    наместе двояко провѣрятичегоглаголют молчаливо
    кагбе
        ѣжѣли получалка.сломалася молчаливо тогдауж
        кагбе
          молвити "Не лепо молвишь, барин!" аминь1
          возвѣрнути нуль спасихоспади1
        ага
        возвѣрнути один аминь1
    ага
    
    цѣло голова(цѣло количество_указов, глаголют указы[])
    кагбе
      дваждыточно первыйсундук, второйсундук, отвѣт аминь1
      буквица знако спасихоспади1
      творити
      кагбе
        молвити "молви первый цифирь, барин: " аминь1
        получити первыйсундук аминь1
    
        ѣжѣли провѣрятичегоглаголют молчаливо еси ложъ тогдауж прѣрвати спасихоспади1
    
        молвити "молви деяние, барин: " аминь1
        получити знако спасихоспади1
    
        ѣжѣли провѣрятичегоглаголют молчаливо еси ложъ тогдауж прѣрвати спасихоспади1
    
        ѣжѣли знако еси 'q' тогдауж прѣрвати аминь1
    
        молвити "молви второй цифирь, барин: " аминь1
        получити второйсундук аминь1
        
        ѣжѣли провѣрятичегоглаголют молчаливо еси ложъ тогдауж прѣрвати спасихоспади1
    
        избирати знако
        тогдауж  кагбе
          выборъ '+' сталобыти
            отвѣт буде первыйсундук да второйсундук аминь1
            прѣрвати спасихоспади1
          выборъ '-' сталобыти
            отвѣт буде первыйсундук бѣзо второйсундук аминь1
            прѣрвати спасихоспади1
          выборъ '*' сталобыти
            отвѣт буде первыйсундук повторити_столько_сколько второйсундук аминь1
            прѣрвати спасихоспади1
          выборъ '/' сталобыти
            отвѣт буде первыйсундук убрати_столько_сколько второйсундук аминь1
            прѣрвати спасихоспади1
        ага
    
        молвити "Отвѣт есьм: " аминь1
        молвити отвѣт да_промолчати спасихоспади1
    
      ага
      пока (истино) аминь1
    
      возвѣрнути нуль спасихоспади1
    ага

    Простой калькулятор на " боярском" диалекте MSVС++

    Alice, 13 Декабря 2009

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

    +68.5

    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
    class A
    {
      public:
         int Left;
         int Top;
         int Right;
         int Bottom;
      public:
         A ()
         {
              Left = Top = Right = Bottom = 10;
         }
         A (int L, int T, int R, int B)
         {
             L = Left;
             T = Top;
             R = Right;
             B = Bottom;
          }
       };

    Методическое пособие обучающее основам ООП в C++. Для студентов :)

    Ground, 12 Декабря 2009

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

    +54.7

    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
    int NOD(int a,int b)
    		{
    			if(a==0)
    			{
    				return b;
    			}
    			if(b==0)
    			{
    				return a;
    			}
    			if(a==b)
    			{
    				return a;
    			}
    			if((a%2==0)&&(b%2==0))
    			{
    				return 2*NOD(a/2,b/2);
    			}
    			else if((a%2==0)&&(b%2!=0))
    			{
    				return NOD(a/2,b);
    			}
    			else if((a%2!=0)&&(b%2==0))
    			{
    				return NOD(a,b/2);
    			}
    			else if((a%2!=0)&&(b%2!=0))
    			{
    				return NOD(b,abs(a-b));
    			}
    			else return 1;
    
    			/*
    			   1. НОД(0, n) = n; НОД(m, 0) = m; НОД(m, m) = m;
    			   2. НОД(1, n) = 1; НОД(m, 1) = 1;
    			   3. Если m, n чётные, то НОД(m, n) = 2*НОД(m/2, n/2);
    			   4. Если m чётное, n нечётное, то НОД(m, n) = НОД(m/2, n);
    			   5. Если n чётное, m нечётное, то НОД(m, n) = НОД(m, n/2);
    			   6. Если m, n нечётные, то НОД(m, n) = НОД(n, |m - n|).
    
    			*/
    		}

    Алгоритм Евклида - прошлый век!
    Нарыл в Wiki некий алгоритм)

    zelenov.pavel, 07 Декабря 2009

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

    +54.9

    1. 1
    2. 2
    3. 3
    void write_msg(const QString& msg, AsyncMp* mp) {
        written(QString(mp?"%1[%2]":"" " %3").arg(mp->my_host()).arg(mp->my_index()).arg(msg));
    }

    А потом удивляемся: чего же оно не работает?

    Thomas_55, 04 Декабря 2009

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

    +922

    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
    int proverka_na_chislo(string str){
      int l=0;
      for(unsigned int i=0; i<str.length();i++) {
       if(str.compare(i,i+1,"0")!=0){
         if(str.compare(i,i+1,"1")!=0){
           if(str.compare(i,i+1,"2")!=0){
             if(str.compare(i,i+1,"3")!=0){
               if(str.compare(i,i+1,"4")!=0){
                 if(str.compare(i,i+1,"5")!=0){
                   if(str.compare(i,i+1,"6")!=0){
                     if(str.compare(i,i+1,"7")!=0){
                       if(str.compare(i,i+1,"8")!=0){
                          if(str.compare(i,i+1,"9")!=0){
                            throw std::invalid_argument("invalid argument\n");
                            l=-1;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      return l;
    }

    Проверка на число.

    LocalStorm, 03 Декабря 2009

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