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

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

    +140

    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
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 100
    int main()
    {
    	do
    	{
    		int i,f,kol,z=1;
    		char s1[MAX],s2[MAX],*ch=" .!?",*s3[MAX];
    		fflush(stdin);
    		do{puts("Vvedite vash text.");
    		gets(s1);}while((s1[0]==' ')||(s1[1]=='\n')||(s1[0]=='\0'));
    		strcpy(s2,s1);
    		s3[0]=strtok(s2,ch);
    		for(i=1;s3[i]=strtok(NULL,ch);i++)
    		    {
    		    }
    		f=i;
    		puts("Otsortirovannue slova.");
    		for(i=0,kol=0;i<f;i++)
    			{
    				if((*(s3[i])=='A')||(*(s3[i])=='a'))
    							{
    								printf("%s ",s3[i]);
    								kol++;
    								z=0;
    				            }
    			}
    		if(z)puts("slov nety. =(");
    		printf("\nKollichestvo slov na 'A' ili 'a': %d",kol);
    		puts("\nvash text.");
    		puts(s1);
    		printf("\n");
    		printf("dlya povtora nathmite lubyi klavishu. dlya vuhoda ESC.\n\n");
    	}
    	while(getch()!=27);
    }

    Моя первая работа) Оцените) Правда я не помню что она делает)

    RaSta-Lion, 21 Ноября 2012

    Комментарии (48)
  3. Си / Говнокод #12133

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #define LengthOfArrayInternal(a)(sizeof(a)/sizeof(a[0]))
     
    #define is_array(x) _Generic((x), typeof((x)[0])[LengthOfArrayInternal(x)]:1, default: 0)
     
    #define COMPILE_TIME_ASSERT(expr) char constraint[expr]
     
    #define length_of_array(a) ({COMPILE_TIME_ASSERT(is_array(a)); LengthOfArrayInternal(a)})

    Определение длины массива. gcc и с11 only.
    Говно как известно рождается в споре:
    http://govnokod.ru/12108#comment160631

    LispGovno, 15 Ноября 2012

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

    +35

    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
    // стоит простая задача: удалить все узлы из списка
    // чувак думает, как же ему это реализовать через задницу?
    // и получилось же!
    
    if (link * root = list.get_root()) {
        link * next;
        do {
            next = root->next();
            list.remove(next);
        } while (root = next);
    }
    
    // неужели нельзя вот так, по-простому?
    
    link * node = list.get_root();
    while (node) {
        link * next = node->next();
        list.remove(node);
        node = next;
    }

    alexzak, 11 Сентября 2012

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    http://www.ubuntu.com/download/desktop
    1. Открыть страницу в Firefox/Google-Chrome.
    2. Сверху над кнопкой "Download" сменить с 32 бит на 64 бит.
    3. Посмотреть внимательно на URL, откуда будет загружатся имидж.

    Код, который это делает трудно понять без контекста.

    wvxvw, 16 Августа 2012

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

    +118

    1. 1
    2. 2
    3. 3
    4. 4
    filename_size = strlen(dest_dir) + strlen(basename) + 6;
        ctx.mtl_file = (char *) malloc(filename_size);
        ctx.obj_file = (char *) malloc(filename_size);
        sprintf(ctx.mtl_file, "%s/%s.mtl", dest_dir, basename);

    Долго соображали, почему вылезает сегфолт во free...

    someone, 18 Июля 2012

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

    +103

    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
    digits n  = reverse $ map (`mod` 10) (takeWhile (/= 0) (iterate (`div` 10) n))
    
    fromDigits l = sum $ zipWith (*) (reverse l) (map (10^) [0..])
    
    isPalindromic x = digits x == (reverse $ digits x)
    
    
    f :: Integer -> [[Integer]] -> [Integer] -> Int -> [[Integer]]
    f x founded lookedup niter 
                      | niter > 50 = [notlychers, [x] ++ lychers ++ lookedup, zs]
                      | nextX `elem` notlychers = [[x] ++ notlychers ++ lookedup, lychers, zs]
                      | nextX `elem` lychers = [notlychers, [x] ++ lychers ++ lookedup, zs]
                      | isPalindromic nextX = [[x] ++ notlychers ++ lookedup, lychers, zs]
                      | otherwise = f nextX founded (x : lookedup) (niter+1)
       where nextX = x + fromDigits (reverse $ digits x)
             notlychers = founded !! 0
             lychers = founded !! 1
             zs = founded !! 2
    
    g :: [[Integer]] -> [[Integer]]
    g founded = f (x-1) [xs, ys, [x-1]] [] 0
     where x  = zs !! 0
           xs = founded !! 0
           ys = founded !! 1
           zs = founded !! 2
    
    gg n = g [[],[],[n+1]]
    
    isLycher n = null $ (gg n) !! 0

    http://projecteuler.net/problem=55
    http://projecteuler.net/thread=55


    >i even haven't understood why it works :(

    TheHamstertamer, 23 Апреля 2012

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

    +1002

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    template<class _CharType>
    bool check_arith(const _CharType* str)
    {
       for(; *str ; ++str)
          for(unsigned long long j = 0x6165696F7579ull; j; j >>= 8)
            if(((j & 0xFF) | 0x20) == (*str | 0x20))
               return true;
       return false; 
    }

    Функция, которая проверяет, есть ли в слове гласные буквы латинского алфавита с учетом регистра.

    gooseim, 15 Марта 2012

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

    +961

    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
    private class LinkedAction
    {
        public Action<Action<bool>> Action { get; set; }
    
        public LinkedAction Next { get; set; }
    
        public void Execute()
        {
            Action(s =>
                {
                    if (s && Next != null) Next.Execute();
                });
        }
    }
    
    private static LinkedAction NewLinkedAction(LinkedAction link, Action<Action<bool>> action)
    {
        return new LinkedAction
        {
            Action = action,
            Next = link
        };
    }
    
    var action = GetCopytoTestActions(parameter)
        .Reverse()
        .Aggregate<Action<Action<bool>>, LinkedAction>(null, NewLinkedAction);
    action.Execute();

    abatishchev, 12 Марта 2012

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

    +1006

    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
    class Worker
    {
        private:
            char name[15];
            double salary;
            ...
            
        public:
        
            Worker(char* n, double s)
            {
                ...
                
                if (s < 0)
                    salary = verSal(s);
                else
                    salary = s;
                
                ...
            }
        
            char* getName()
            {
                char* t = new char[15];
                strcpy(t, name);
                return t;
            }
            
        private:
            double verSal(double s)
            {
                do
                {
                    cout << "Ошибка при вводе зарплаты. Введите зарплату: ";
                    cin >> s;
                }
                while (s < 0);
                return s;
            }
    }

    Вот ещё один пример из конспекта (это уже от другого преподавателя). Он, заявил, что в getName() о t "позаботится сборщик мусора". Просто он Java тоже читает...

    vovams, 01 Февраля 2012

    Комментарии (48)
  11. ActionScript / Говнокод #9195

    −116

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    /*
    Часть библиотеки MathUtilsLib  (c) Sergey ( FlexMaster ), 2008
    */
    function shuffle( a:Array ):void{
       if( a ){
           a.map( function ( val:*, index:int, o:Array ){ o[index] = {v:val, r:int( 1000*Math.random())} }, a );
           a.sortOn( 'r');
           a.map(  function ( val:*, index:int, o:Array ){ o[index] = val['v']} );
       }
    }

    К сожалению, в Actionscript нет функции, которая позволила бы получить случайным образом перестановку массива. Иногда это бывает очень нужно.
    функция shuffle перемешивает содержимое исходного массива случайным образом.

    kyzi007, 22 Января 2012

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