1. Си / Говнокод #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) RSS

    • С лабами брысь к преподу, он оценивать будет.
      Ответить
      • Препод не выскажет всю правду в лицо!
        Ответить
        • Окей. Ваш стиль оформления кода - говно.
          Ответить
        • > Препод не выскажет всю правду в лицо!

          Судя по коду, тебя самому главному не учили. Рекомендую почтитать "Code Complete", пока не поздно.
          Ответить
    • do
      {
          // ...
      }
      while (getch() != 27);

      Обожаю сочетание этого стиля расстановки скобок и цикла do-while. Особенно если тело цикла длинное, и не входит на экран... Всегда создается впечатление, что там внизу вляпан пустой цикл, пока не посмотришь на то, чем начинается блок.
      Ответить
    • > puts("Vvedite vash text.");
      Вежливые люди заканчивают такие фразы двоеточием.

      > puts("Otsortirovannue slova.");
      Ага, отсортированные согласно их позиции в предложении. *facepalm.png*

      > if(z)puts("slov nety. =(");
      > printf("\nKollichestvo slov na 'A' ili 'a': %d",kol);
      Где else? Да и вместо отдельного z можно было проверять !kol.

      P.S. Menya diko besit translit. Iz-za nego ya bi labu ne zachol.
      P.P.S. A za formatirovanie koda otorval by ruki.
      Ответить
      • Codepage hell...
        Студенты его чинят не менее мерзкой функцией _rus, если я правильно помню.
        Ответить
        • Не-не мы это чиним вот этим
          SetConsoleCP(1251);
          SetConsoleOutputCP(1251);
          )))))
          Ответить
        • Как-то так можно, если это винда:
          #include <windows.h>
          ...
          SetConsoleOutputCP(1251);
          Я всегда буду обновлять тред перед отправкой комментария.
          Я всегда буду обновлять тред перед отправкой комментария.
          Я всегда буду обновлять тред перед отправкой комментария.
          Ответить
          • а чем setlocale/std::locale::global не катят?
            Ответить
            • Лень.
              Ответить
              • а
                > SetConsoleCP(1251);
                > SetConsoleOutputCP(1251);
                написать не лень?
                Ответить
                • А кто пишет?))) я их один раз в какой-то лабе написал а теперь копипастю и все)
                  Ответить
                • > написать не лень
                  Скорее, лень разбираться, что такое locale
                  Ответить
                  • Да кстати! ты прав я не знаю что locale и setconsole то же.
                    Ответить
                  • Кстати, в винде setlocale(LC_ALL, "") достаточно? Или надо конкретную кодировку?
                    Ответить
                    • достаточно - Environment's default locale
                      при желании можно заменить на "Russian"
                      Ответить
                  • тогда бесплатно автору дарю еще 2 способа
                    1) сишка
                    setlocale(LC_CTYPE, "");
                    вместо LC_CTYPE можно впихать LC_ALL
                    2) крестоблядство
                    std::locale::global(std::locale(""));
                    заметьте, насколько больше ненужной писанины в сраных крестах
                    Ответить
                    • Вот за это большое спасибо. Хоть какая-то польза!
                      Ответить
                      • оказывается на уютненьком не только постят хуйню
                        Ответить
                      • Пользы от этой помощи почти ноль. Новая школота всеравно набежит, тк этот топик утонул и инфа любезно предоставленная дификейстрой не сохранится
                        Ответить
                        • Скажем так самое главное что для меня польза уже есть!
                          Ответить
            • Каюсь, когда я писал те лабы, я не знал о setlocale ;)

              Не было путнего инета, зато был диск с древним MSDN'ом... Поэтому в то время я винапи и прочее говно знал гораздо лучше стандартов сишечки. Да и писал в стиле "программиста на c/c++ под шиндовс".

              P.S. В одной из лаб апишными функциями растянул окно до 1000х1000, дабы не писать выхлоп в файл...
              Ответить
              • даешь квадратные мониторы!
                Ответить
                • квадратные алфавитно-цифровые дисплеи
                  Ответить
                  • Так 1000×1000 — это текстовое разрешение что ли? Какое же тогда там разрешение графики?
                    Ответить
                    • 1000х1000 - да текстовое, размер буфера консоли в символах. Реально на экране видно, конечно же, только кусок, но можно скроллить.

                      P.S. На самом деле там для задачи хватило бы и 200х20.
                      Ответить
          • > SetConsoleOutputCP(1251);
            > std::locale::global
            > setlocale

            ВИНДОПРОБЛЕМЫ
            Ответить
      • Кстати да. Если когда соберусь-таки преподавать программирование, не буду принимать лабы с комментариями и выводами на экран в транслите.
        Ответить
        • И БЕЗ БЛОК-СХЕМ!
          Ответить
          • Вспомнилось что-то с одного форума: "комменты, написанные КАПСОМ удаляются. Автор банится."
            Ответить
          • Не, на блок-схемы мне плевать, если честно. Мы их только на дискретке рисовали, но никогда на программировании.
            Ответить
            • потому что блок-схемы в лабах это идиотизм
              как, впрочем, и N страниц текста А4 в виде отформатированного правильным образом документа "описание программы", особенно когда сама лаба - на один пейдждаун
              так сдавали свои говнолабы на модула-2 или ином мертвом языке терпеливые ребята на соседней кафедре
              Ответить
              • Я читал про язык блоксхем, там всё блоксхема, даже небо. Русский, вроде.
                А они меня в школе бесили и я из принципа их не рисовал.
                Ответить
                • ДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность)?
                  Ответить
    • И да, где же return 0 в конце функции? То, что оно компилится еще не значит, что можно его не писать.
      Ответить
    • Еще:
      - <conio.h> нет в линуксе, пришлось менять getch() на getchar().
      - Неправильно парсятся предложения, в которых есть запятая.

      Вердикт: типичная унылая говнолаба, коих тыщи, треду минус.
      Ответить
      • > нет в линуксе
        Нет в *nix'ах.

        А вообще это лютый пиздец:
        - нет return в main'e
        - <conio.h>
        - main без параметров
        - бешенное форматирование
        - транслит
        - 17-ая строка - цикл for, в условии которого присваивание (прям по K&R блядь)
        - whitespaces - не хватает '\v', '\t', '\r'
        - магическое число 27 (надо было define ESC_KEY 27)

        Короче это нереальный пиздец. Надеюсь автор сейчас пишет намного лучше.
        Ответить
        • > main без параметров
          Разрешено стандартом.
          Ответить
        • Это моя первая работа на первом курсе) Вот самое начало работы))
          Ответить
          • До этого никакого опыта программирования не было?
            Ответить
            • Ну да! Это вот первая лаба. И по совместительству вообще первая работа по программированию!
              Ответить

    Добавить комментарий