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

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

    +60.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
    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
    //---сортировка по возрастанию методом выбора отдельно реальной и мнимой составляющих---------------
    bool F_Sorted(T_VectorComplex * VC, bool)
    {
        int i, j, m, N;
        double z;
        N = (*VC).size();
        for (j = N - 1; j > 0; j--) {
            m = j;
            z = real((*VC)[j]);
            for (i = j - 1; i >= 0; i--)
                if (z < real((*VC)[i])) {
                    z = real((*VC)[i]);
                    m = i;
                }
            if (j != m) {
                (*VC)[m] = T_Complex(real((*VC)[j]), imag((*VC)[m]));
                (*VC)[j] = T_Complex(z, imag((*VC)[j]));
            }
        }
        for (j = N - 1; j > 0; j--) {
            m = j;
            z = imag((*VC)[j]);
            for (i = j - 1; i >= 0; i--)
                if (z < imag((*VC)[i])) {
                    z = imag((*VC)[i]);
                    m = i;
                }
            if (j != m) {
                (*VC)[m] = T_Complex(real((*VC)[m]), imag((*VC)[j]));
                (*VC)[j] = T_Complex(real((*VC)[j]), z);
            }
        }
        return (true);
    }

    crox, 11 Марта 2010

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

    +152.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function setTabs() {
           for(var i = 0; i < tabsNum; i++) {
               if(i === currentTab) {
                   $("#tabCont" + i).css("display","block");
               } else {
                   $("#tabCont" + i).css("display","none");
               };
           };
       };

    Нашел отличную функцию для скрытия/открытия табов

    Rpsl, 01 Марта 2010

    Комментарии (32)
  4. Си / Говнокод #2526

    +100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #include <iostream>
    int main(void)
    {
      for (int i=0;i<600000000;i++)
      cout<<"Ten minuters";
    //IT Works!
    }

    Реальный код с cyberforum. Задание звучало как "Написать таймер, каждые 10 минут выводящий какое-нибудь сообщение". Один умник написал такое нечто, от чего я просто впал в ступор.

    darkcheg, 02 Февраля 2010

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

    +56.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
    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
    /*
    	Данный кусок кода был сперт uncle Lem'ом из небесной канцелярии 27.02.2008
    */
    
    #include<time.h>
    #include<stdlib.h>
    #include<iostream.h>
    #include"russian.h"
    
    void world();
    
    void main() {
    	srand(time(0));
    	world();
    }
    
    void world() {								/*void (пустота) указывает на безвыходность ситуации*/
    	const bool good = false,				/*Объективная реальность, данные получены на основе личного опыта*/
    		evil = !good;						/*ну, это логично... зло - это НЕ добро*/
    	/*пока рай... добро, зло и инфернальность - по нулям, армагеддон пока не светит*/
    	unsigned long int evil_level = 0;		/*Зло - в минуса не уйдет. Факт*/
    	short int good_level = 0;				/*добро - сильно не вырастет. Не дадут*/
    	int infernal = 0;						/*Инфернальность. ПОКА ноль. Позаимствовано у Ефремова*/
    	int years = 0;							/*начинается жизнь на Земле*/
    	int people_resources = 0;				/*человеческие ресурсы (для Армагеддона)*/
    	int evil_resources = 0;					/*ресурсы сил зла (для Армагеддона)*/
    	while(evil) {							/*пока существует зло...*/
    		years++;							/*и годы идут...*/
    		if (evil && !good) {				/*если в текущем году было зло и не было добра*/
    			infernal += evil_level++;		/*инфернальность растет на уровень зла, которое, в свою очередь, становится сильнее*/
    			good_level--;					/*а добро слабеет под натиском зла*/
    		}
    		else if (evil && good || !evil && !good) {	/*если в текущем году было добро и зло или ни того, ни другого*/
    			infernal = infernal;			/*инфернальность остается на том же уровне (да, тупо, зато наглядно)*/
    		}
    		else if (!evil && good) {			/*если в текущем году было добро и не было зла*/
    			infernal -= good_level++;		/*инфернальность уменьшается на уровень добра, которое, в свою очередь, становится сильнее*/
    			evil_level--;					/*а зло слабеет под натиском добра*/
    		}
    		if (infernal >= 100) {				/*когда уровень инфернальности достигнет критической точки, начинается Армагеддон*/
    			people_resources = 1+rand()%(1000000);	/*это у нас человеческие ресурсы*/
    			evil_resources = 1+rand()%(1000000);	/*а это - адские*/
    			/*тут у нас типа битва людишек против нечисти. ака Армагеддон*/
    			if (people_resources<evil_resources) {	/*если людей меньше, то хана. Ад победил. Пипец всему живому. Начало Апокалипсиса*/
    				cout<<"Все, армагеддец настал, комп тебе больше не понадобится. Беги, покупай белые тапочки\n";
    				return;
    			}
    			else if (people_resources>evil_resources) {	/*и наоборот, если люди победили - начало райской жизни. Манна небесная, пара белых крыльев и все, что к ним прилагается*/
    				cout<<"Че сидишь, готовься получать белые крылья и порцию манны небесной\n";
    				return;
    			}
    			else continue;					/*а если поровну - то ничья, живем дальше*/
    		}
    	}
    }

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

    uncle Lem, 07 Января 2010

    Комментарии (32)
  6. PHP / Говнокод #2093

    +159.7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <?php
    $file_name = 'http://www.****';
    //$html_string = @file_get_contents($file_name);
     ob_start();
     readfile($file_name);
     $html_string = ob_get_contents();
     ob_end_clean();
    ?>

    копаю проект, на котором идет загрузка данных из инета...
    хваталка там про жесть .... автор решил, что использовать одну функцию будет слишком просто ...
    хотя отчасти я его понимаю... скорее всего все жутко тормозило...
    сам в детстве так ошибался, если дергаешь из инета стандартными средствами что-нибудь, то там нельзя задать таймаут. и если тебя вдруг забанили, то вся дергалка виснет обычно минуты на полторы-две. А то, что мы тут видим - это танцы с бубном, а вдруг заработает... не люблю когда так делают :(
    PS: ну если @ в коде встречается - то автора можно сразу добивать чем-нибудь тяжелым... особенно сильно хотелось это сделать, когда убил часов 10 на поиск места, где происходит ошибка и почему выводится белый экран...

    nicolay-punin, 03 Ноября 2009

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

    +108.6

    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
    /**
     * Копирует первое большое число во второе.
     *
     * @param a большое число приемник
     * @param b большое число источник
     * @param n длинна больших чисел в словах
     *
     * @return FALSE - четное, TRUE - нечетное
     */
    void int_copy(uword_t *a, const uword_t *b, const int n)
    {
        memcpy(a, b, sizeof(a[0]) * n);
    }

    Вот такую милую функцию я нашел в проекте над которым работаю.

    pvkr2, 12 Октября 2009

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

    −108.2

    1. 1
    2. 2
    Движение.Состояние = Перечисления.СостоянияРаботникаОрганизации[Причина.Метаданные().ЗначенияПеречисления[Перечисления[Причина.Метаданные().Имя].Индекс(Причина)].Имя];
    .

    Видимо, защита от шпиона: вот так определяется значение перечисления. (Причина - это тоже перечисление)

    Kopchuga, 18 Сентября 2009

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

    +890.7

    1. 1
    #define private public

    guest, 12 Декабря 2008

    Комментарии (32)
  10. Pascal / Говнокод #54

    −5.8

    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
    function IntToMonth(NumberMonth: Integer): string;
    begin
      сase NumberMonth of
        1: Result := 'Январь';
        2: Result := 'Февраль';
        3: Result := 'Март';
        4: Result := 'Апрель';
        5: Result := 'Май';
        6: Result := 'Июнь';
        7: Result := 'Июль';
        8: Result := 'Август';
        9: Result := 'Сентябрь';
        10: Result := 'Октябрь';
        11: Result := 'Ноябрь';
        12: Result := 'Декабрь';
      else
        Result := 'Август';
      end;
    end;

    Думаю, по названию функции все понятно :)

    guest, 04 Декабря 2008

    Комментарии (32)
  11. Куча / Говнокод #28799

    +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
    // https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/alloc/alloc.rs#L376
    pub const fn handle_alloc_error(layout: Layout) -> ! {
        const fn ct_error(_: Layout) -> ! {
            panic!("allocation failed");
        }
    
        fn rt_error(layout: Layout) -> ! {
            unsafe {
                __rust_alloc_error_handler(layout.size(), layout.align());
            }
        }
    
        unsafe { core::intrinsics::const_eval_select((layout,), ct_error, rt_error) }
    }
    
    
    // https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/kernel/lib.rs#L96-L103
    fn panic(info: &core::panic::PanicInfo<'_>) -> ! {
        pr_emerg!("{}\n", info);
        // SAFETY: FFI call.
        unsafe { bindings::BUG() };
        // Bindgen currently does not recognize `__noreturn` so `BUG` returns `()`
        // instead of `!`. See <https://github.com/rust-lang/rust-bindgen/issues/2094>.
        loop {}
    }
    
    
    // https://github.com/torvalds/linux/blob/master/include/asm-generic/bug.h#L51-L68
    /*
     * Don't use BUG() or BUG_ON() unless there's really no way out; one
     * example might be detecting data structure corruption in the middle
     * of an operation that can't be backed out of.  If the (sub)system
     * can somehow continue operating, perhaps with reduced functionality,
     * it's probably not BUG-worthy.
     *
     * If you're tempted to BUG(), think again:  is completely giving up
     * really the *only* solution?  There are usually better options, where
     * users don't need to reboot ASAP and can mostly shut down cleanly.
     */
    #ifndef HAVE_ARCH_BUG
    #define BUG() do { \
    	printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
    	barrier_before_unreachable(); \
    	panic("BUG!"); \
    } while (0)
    #endif

    О том, как в ядре Linux говнораст обрабатывает ошибку аллокации

    j123123, 19 Июня 2023

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