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

    +146

    1. 1
    2. 2
    3. 3
    int *inter = (int[]){1, 8}; 
      /*...*/ 
      inter = (int[]){8, 9};

    RS-232, 08 Октября 2011

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    auto L = [](int i)->int { return i+1; };
    typedef decltype(L) TL;
    auto lfunc = &TL::operator();
    int i = (L.*lfunc)(1);

    ohlol, 08 Октября 2011

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

    −153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Итак, у вас есть два стека с ограничением на размер - N. Стеки поддерживают операции push, pop, top.
    pop пустого стека, как и push заполненного стека вызывает соответствующее исключение.
    Необходимо из этих двух стеков смоделировать стек с таким же размером, но с дополнительным свойством -\
    push заполненного стека вызывает затирание последнего элемента стека, push(41,[1,2,3]) -> [41,1,2] ,\
    где N=3.
    Время пошло. Язык программирования любой.

    Да, это не говнокод, но 90% кандидатов не могут ее решить. (Наверное, потому, что язык собеседования - 1С)

    alexoy, 08 Октября 2011

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

    +158

    1. 1
    2. 2
    # Легкий XSS clean =)
    $_GET = array_map('htmlspecialchars_array', $_GET);

    Очень удивило...

    manyrus, 08 Октября 2011

    Комментарии (9)
  5. PHP / Говнокод #8126

    +168

    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
    <?php
    
        /*
        
            localhost Ltd - ALPHA CMS
            
            Version: 8.0
            
            File name: features_portability.php
            Description: This file contains the FEATURES PORT MODEL class.
            
            Coded by George Delaportas (G0D)
            
            localhost Ltd
            Copyright (c) 2011
        
        */
        
        
        
        // FEATURES PORT MODEL class
        class FEATURES_PORT_MODEL extends ROOT_MODEL
        {
        
            
    
        }
        
        
        
        /* ---------- End ---------- */
    
    ?>

    ALPHA CMS. Таких вот пустых классов ВРОТКОМПОТ_MODEL сорок шесть штук. Форматирование сохранено.

    telnet, 08 Октября 2011

    Комментарии (29)
  6. Си / Говнокод #8125

    +130

    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
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<string.h>
    #include<sstream>
     
    #define s(m) scanf("%d",&m);
    #define sf(m) scanf("%f",&m);
    #define slld(m) scanf("%lld",&m)
    #define pb(m) push_back(m);
     
    #define FOR(m) for(int i=0;i<m;i++)
    #define FORS(m) for(int j=0;j<n;j++)
    #define REP(n,m) for(int i=n;i<m;i++)
    #define REPS(n,m) for(int j=n;j<n;j++)
     
    #define sb(m) (pr[m>>5]|=(1<<(m&31)))
    #define cb(m) (pr[m>>5]&=~(1<<(m&31)))
    #define chkb(m) (pr[m>>5]&(1<<(m&31)))
     
    #define n_sb(m) (next_pr[m>>5]|=(1<<(m&31)))
    #define n_cb(m) (next_pr[m>>5]&=~(1<<(m&31)))
    #define n_chkb(m) (next_pr[m>>5]&(1<<(m&31)))
     
    #define nev(m) (m&1)
    using namespace std;
    int main()
    {
      unsigned int pr[1000];
      
      for(int i=0;i<1000;i++)
      {
        pr[i]=0xffffffff;
      }      
        
      for(int i=3;i*i<=10000;i+=2)
      {
      if(chkb(i))
      { printf("%d\n",i);
        for(int j=i*i;j<=10000;j+=i+i)
        {          
            if(chkb(j))
            {
              cb(j);
               printf("%d\n",j);
            }            
        }
       }          
      }  
      cb(0);
      cb(1);
      cb(2); 
      FOR(10)
       {
         if(chkb(i)&&(i&1)!=0)
          printf("%d\n",i)      ;
       }
      int n;
      s(n);
      if(chkb(n)==1&&((n&1)!=0))
      {
        FOR(n)
         printf("Hello World\n");     
      }
      else
      {
        FOR(n)
          printf("Hello Codesprint\n");    
      }
      return 0;    
    }

    Горжусь РоСсией

    alexoy, 08 Октября 2011

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

    +146

    1. 1
    *((Point *)((Node *) result->data)->data) = *p;

    Вот это Point *, которая в void * хранится, в списке, в котором другой список хранится, в доме, который построил Джек.

    byss, 08 Октября 2011

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

    +160

    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
    #include <iostream>
     
    int main()
    {
    int a[4] = {1,2,3,4}; 
    int (&b)[4] = a; 
    int c[4] = {5,6,7,8}; 
    a=c; 
    std::cout<<b[0];
    }
    
    prog.cpp: In function ‘int main()’:
    prog.cpp:8: error: invalid array assignment

    Да, похоже С++ не настолько высокоуровневый, чтобы поддерживать такое понятие как присваивание массивов.

    http://www.gamedev.ru/flame/forum/?id=153265&page=2#m20

    TarasB, 08 Октября 2011

    Комментарии (63)
  9. SQL / Говнокод #8122

    −107

    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
    SELECT SUBSTR(exp, 1, 20) "expression", (CASE WHEN SUBSTR(exp, 6, 1) = '+' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2))
     + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE 
    WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) + TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '-' 
    THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * 
    TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) 
    - TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '*' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) + 
    TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN 
    SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) / 
    TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) * TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '/' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) 
    ELSE CASE WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) / TO_NUMBER(SUBSTR(exp, 7, 2)) END END END END) "result" FROM lab3_2;

    Сидел я на прошлой лабе и делал значит задания по Oracle и вот последнее задание было таким:

    "Дана таблица с единственной колонкой (строкового типа) с выражениями вида:’xx*xx*xx’ где xx – символы цифр 0..9, * - один из символов математических операций: *+-/ Например, таким выражениями являются ‘01*23+34’ ‘32+13-12’ и т.д. Требуется создать таблицу и заполнить ее строками содержащими такие выражения (не менее 5 строк), составить оператор SELECT который используя данные из этой таблицы выведет строки вида ‘<исходное выражение>=<вычисленный результат>’. Задание выполнить без учета приоритетности операций."

    Вооружившись Notepad++ я составил вот такое вот запросище, которое работает между прочим :) Для повторения эксперимента нужно создать таблицу lab3_2 с полем exp строкового типа, ну и внести в нее пару каких-нибудь выражений.

    10a10b1s, 08 Октября 2011

    Комментарии (20)
  10. Python / Говнокод #8121

    −92

    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
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    def foobar():
        sev=raw_input("Chislo dvoichnoy sistemy schisleniya: ") # Вводим число с клавиатуры
        lsev=list(sev)
        n=len(lsev)-1
        dec=0
        result=""
        f=[]
        i=1
        if sev <= '000000000000000000000000000000000000000000000000000000000000000000': # Проверка если много нулей
            print "Chislo vosmerichnoy sistemy schisleniya: ",0
            return
        if sev.isdigit()== 0:
            print "vi vveli nivirnyu stroku!" #Возвращает ошибку, если хотя бы 1 символ - не число
            return
        if sev.isalpha() == 1: #Проверка на ввод буквенных значений (True=1) значит есть буква
            print "vi vveli bukvu, a doljni chisla!"
            return
        if sev == '':
            print "vi nichego ne vveli" #Проверка на пустое поле ввода
            return
        else:
            while n>=0:
                if int(lsev[-n-1]) in range(2): # Проверяем, является ли число двоичным
                    dec+=int(lsev[-n-1])*2**(n) # Переводим из двоичной в десятичную
                    n-=1
                else: # Сообщаем об ошибке ввода и прекращаем выполнение
                    print "Vvedennoye chislo ne yavlyayetsya dvoichnym!"
                    return
            while dec>0: # Цикл, создающий список из остатков деления на 8 (перевод в восьмеричную систему)
                f.append(dec%8)
                dec=dec/8
                i+=1
                z=len(f)-1
            while z>=0: # Созданием из списка и печатаем восьмеричное число
                result+=unicode(f[z])
                z-=1
            print "Chislo vosmerichnoy sistemy scisleniya:",result
    foobar()

    Win95, 08 Октября 2011

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