1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #25982

    +1

    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
    #include <cstdio>
    
    class tag;
    
    template<class>
    struct type { friend constexpr auto get(type); };
    
    template<class TKey, class TValue>
    struct set { friend constexpr auto get(TKey) { return TValue{}; } };
    
    void foo() {            // never called
      if constexpr(false) { // never true
        if (false) {        // never true
            constexpr auto call = [](auto value) { std::printf("called %d", value); };
            void(set<type<tag>, decltype(call)>{});
        }
      }
    }
    
    int main() {
      get(type<tag>{})(42); // prints called 42
    }

    https://twitter.com/krisjusiak/status/1186363017329594368
    Какой C++20 )))

    j123123, 21 Октября 2019

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <stdio.h>
    
    struct Gost {
       int x = 42;    
    };
    
    
    int main () {
        Gost gst;
        printf("%d\n", gst); // 42
    }

    http://ideone.com/fB26cs

    Уб ли это?

    OCETuHCKuu_nemyx, 06 Октября 2019

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

    +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
    // https://habr.com/ru/post/466985/
    
    // о каррировании в крестоговне
    
    // По сути это каррирующее говно просто складывает куда-то хуйню, а потом целиком ее в функцию призывает.
    // Ну т.е. на Си можно написать дрисню вида
    
    int shit(int a, int b, int c, int d)
    {
      return a*(b+c*d);
    }
    
    // И вот каррирование такой дрисни это как если б я сделал структуру
    struct shit_arguments
    {
       int a;
       int b;
       int c;
       int d;
    };
    
    // И потом бы с конца заполнял это говно
    struct shit_arguments;
    shit_arguments.d = 13;
    shit_arguments.c = 666;
    shit_arguments.b = 1488;
    shit_arguments.a = 42;
    // и при полном заполнении этого говна просто б вызвал функцию
    // подставив туда накопившееся говно
    int somecrap = shit(shit_arguments.a, shit_arguments.b, shit_arguments.c, shit_arguments.d);
    
    // именно так эта крестовая дрисня и работает, она не может произвести частичное вычисление
    // не может сделать функцию с частично вычисленной дрисней в ней на основе частично переданной хуйни
    
    // если я например в функцию shit захочу частично подставить аргументы b,c,d как 1,2,3 то у меня не получится функции вида
    int shit_b1_c2_d3(int a)
    {
      return a*(7); // 1+2*3 = 7
    }
    // Нихуя подобного не будет. А если нихуя подобного нет, нахуй это бесполезное дерьмо вообще надо?
    // В крестах никак нельзя на основе каких-то готовых функций сгенерить
    // видоизмененные функции с частично сделанными вычислениями
    // Никакой нормальной рефлексии нет, просто какие-то тупые кривые костыли к сишечке налепили
    // И это программисты?

    j123123, 15 Сентября 2019

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

    +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
    bool  Object::DeleteDouble(void* data)
        {
            Element* rc = Head;
            BANKCLIENT* asd = (BANKCLIENT*)rc->Data;
            int dbl;
            Element* rc1 = Head;
            BANKCLIENT* asd1 = (BANKCLIENT*)rc1->Data;
            while ((rc != NULL) && (rc->Data != data))
            {
                asd = (BANKCLIENT*)rc->Data;
                dbl = asd->NumScore;
                while ((rc1 != NULL) && (rc1->Data != data))
                {
                    asd1 = (BANKCLIENT*)rc1->Data;
                    if (dbl == asd1->NumScore)
                    {
                        std::cout << "Дублирующийся элемент удалён" << std::endl;
                        Delete(rc1);
                        goto flag;
                    }
                }
            }
        flag:
            system("pause");
            return rc;
        }

    Некая svetlana.kotik раскрывает секреты односвязных списков.

    Fluttie, 20 Мая 2016

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

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public enum Status : byte
    {
            Disabled = 0,
            Enabled
    }

    Мопед не мой, прислала боевая подруга из Канады, реальный проект за недетские деньги.
    Лаконичности була не хватило, лучше свой енум сделать, чем писать bool IsEnabled.
    KISS.

    kerman, 28 Марта 2016

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

    +1

    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
    template < typename CType >
        void list < CType >::sorted_push(CType val, long int key)
    {
    	if (head) {
    		// Создаём контейнер и помещаем в него полученное значение
    		container < CType > *new_cont;
    		container < CType > *tmp = head;
    
    		new_cont = new container < CType >;
    		new_cont->set_key(key);
    		new_cont->set_cargo(val);
    
    		while ((tmp != tail) && (key > (tmp->get_key())))
    			tmp = tmp->get_next();
    
    		if ((tmp == tail) && (key > (tmp->get_key()))) {	// Если выполнились одновременно два условия в цикле
    			new_cont->set_next(tmp->get_next());	// Вставляем в самый конец
    			new_cont->set_past(tmp);
    			tmp->set_next(new_cont);
    			tail = new_cont;
    		} else {
    			new_cont->set_next(tmp);
    			new_cont->set_past(tmp->get_past());
    			if ((tmp->get_past()) != NULL)
    				tmp->get_past()->set_next(new_cont);
    			if (tmp == head)
    				head = new_cont;
    			tmp->set_past(new_cont);
    		}
    
    		if (empty) {
    			empty = false;
    			tail = head;
    		}
    	} else {
    		container < CType > *new_cont;
    
    		new_cont = new container < CType >;
    		new_cont->set_key(key);
    		new_cont->set_cargo(val);
    
    		new_cont->set_next(head);
    		tail = head = new_cont;
    		empty = false;
    	}
    }
    
    template < typename CType > CType queue < CType >::pop()
    {
    	container < CType > *tmp = list<CType>::head;
    
    	if (tmp == NULL) {
    		std::cerr <<
    		    "Стек пуст! Стек возвращает мусор! ";
    		list<CType>::empty = true;
    	} else {
    		CType tmpval = list<CType>::head->get_cargo();
    		// Переходим к следующему элементу
    		list<CType>::head = list<CType>::head->get_next();
    		if (list<CType>::head == NULL)
    			list<CType>::empty = true;
    		delete tmp;
    		return tmpval;
    	}
    }
    
    template < typename CType > CType stack < CType >::pop()
    {
    	container < CType > *tmp = list<CType>::tail;
    
    	if (tmp == NULL) {
    		std::cerr <<
    		    "Очередь пуста! Возвращается мусор! ";
    		list<CType>::empty = true;
    	} else {
    		CType tmpval = list<CType>::tail->get_cargo();
    
    		// Переходим к предыдущему элементу
    
    		if (list<CType>::tail != list<CType>::head)
    			list<CType>::tail = list<CType>::tail->get_past();
    		else
    			list<CType>::empty = true;
    		delete tmp;
    		return tmpval;
    	}
    }

    пострелял себе в ногу

    viktorokh96, 25 Марта 2016

    Комментарии (71)
  8. Куча / Говнокод #18791

    +2

    1. 1
    Давайте устроим холиворчик - скриптинг на винде против скриптинга на линупсе, или баш против помершелла

    3_14dar, 30 Сентября 2015

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //перевод даты в timestamp
    function strtotimestamp($time) {
        $tmp = explode(' ', $time);
        $date = explode('.', $tmp[0]);
        $hours = explode(':',$tmp[1]);
        $tmp = mktime($hours[0], $hours[1], 0, $date[1], $date[0], $date[2]);
        return $tmp;
    }

    когда нужно быстро сделать работающее решение, а времени на чтение гугла нет

    simplycrazy, 26 Июня 2015

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

    +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
    #if defined(_WIN32) || defined(_WIN64)
         size_t size = message.size();
         size_t size_buf = 1015;
    
         size_t pointer = 0;
         for (int i = 0; i < (size/size_buf) + 1 ; i++){
             
             /*Делаем для красивого вывода. Пробел всегда один байт.
              *Потому сматываем указатель буфера до первого пробела.*/
             int buf = size_buf;
             while (message[pointer+buf] != ' ')
                 buf--;
             
             /*Здесь лечится косяк MinGw, буфер принимает по 1к байтов.
              *Лечение производим создавая дополнительные буферы.*/
             istringstream ss(message.substr(pointer,buf) );
             std::cout << ss.rdbuf();
             
             pointer += buf;
         }
    #else
         std::cout << message;
    #endif

    Похоже плохая сборка MinGw.
    http://govnokod.ru/13094

    crastinus, 26 Сентября 2013

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

    −16

    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
    #include <iostream>
    #include <string>
    
    using namespace std;
    /*
    
    */
    
    int change_word(const int begin_pos, string &words, int k, char c)
    {
        int pos = begin_pos;
        int char_count = 0;
    
        bool replaced = false; 
    
        while(pos < words.length() && isalpha(words[pos]))
        {
    
            char_count++;
            if(char_count == k && !replaced)
            {
                words[pos] = c;
                replaced = true;
    
            }
            pos++;
    
        }
    
        return pos; 
    }
    
    void change_words(string &words, int k, char c)
    {
        int i = 0;
    
        while(i < words.length())
        {
            if(isalpha(words[i]))
            {
                i = change_word(i, words, k, c);
    
            }
            else
            {
                i++;
            }
    
        }
    
    }
    
    
    int main()
    {
        char c = '>'; 
        int k = 0; 
        string words = "Length of the substring to be copied";
    
        cout << "enter number:";
        cin >> k;
        change_words(words, k, c);
    
        cout << "changed text: " << words << endl;
        return 0;
    }

    лаба на с++, заменить в тексте к-тую букву на символ с.

    spivti, 01 Сентября 2013

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