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

    +19

    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
    #include "stdafx.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include "locale.h"
    int gl(char ch);
    int main()
    { char a;
    setlocale(LC_ALL, "rus");
    printf("Введите букву\n");
    scanf_s("%c", &a);
    if (gl(a)==1)
    printf("Гласная", a);
    else
    printf("Не гласная", a);
    printf("%c", gl(a));
    system("pause");
    }
    int gl(char ch)
    { char m[18]={'У', 'Е', 'А', 'О', 'Э',
    'Я', 'И', 'Ю', 'Ё',
    'у', 'е', 'а', 'о', 'э', 'я', 'и', 'ю', 'ё'};
    int N=0;
    setlocale(LC_ALL, "rus");
    for (int i=0; i<18; i++)
    if (m[i]==ch) N++;
    if (N==1)
    return 1;
    else return 0;
    }

    Вопрос блондинки, на одном из прогерских форумов. Для информативности добавлю её вопрос:

    Написать функцию, которая возвращает произведение элементов одномерного массива.
    Ошибок нет. Всё время возвращает значение "не гласная" при вводе любых и согласных, и гласных букв. В чём ошибка? Вроде правильно функция значение возвращает...?

    Запостил: hromjo, 09 Апреля 2013

    Комментарии (17) RSS

    • > scanf_s
      Дожились... детей с детства к виндоблядству приучают...
      Ответить
      • Мда, а потом сидишь и пишешь говнозатычки, чтоб оно gcc собиралось.
        Ответить
      • Справедливости ради, MSVC ругается предупреждениями при применении стандартных функций вместо MS-специфичных.
        Ответить
        • Потому что они небезопастные.
          Ответить
          • Ну а почему зеленым. 99% из них действительно небезопасные. Кто бы с этим спорил. На gets вон даже gcc ругается, умоляя заменить его на fgets.
            Ответить
            • Потому что предлагает менять на нестандартные.
              Ответить
              • Да на самом деле я их даже понимаю. Если стандартные функции в большинстве своем полное говно, подходящее только для лаб, то что остается?

                С чем я согласен - то, что эти функции deprecated, и лучше их не юзать.
                С чем я не согласен - то, что их надо заменить на подобные костыли от мс.
                Ответить
                • >99% из них действительно небезопасные.
                  Поясняю.
                  Судя по тому количеству сырцов с которыми я имел дело, и по этому коду в частности, множество погроммистов считают, что использование замены от мс сделает их код "безопастным".

                  Ко подсказывает мне функции не кидают исключения, потому что это сишка. привет Тарасу.
                  Они возвращают некий код ошибки. Или вызывают некий обработчик.
                  Так вот 90% никогда не задают ни обработчик, ни проверяют код возврата функции.

                  То есть от лишнего ifa, который проверяет валидность данных или этот самый код возврата никуда не деться.
                  В итоге мы подменяем переполнение буфера тихим пропуском комманды и херингом данных.
                  И называем это "безопастным" аналогом.
                  Ответить
                  • >"безопасным"
                    triple shame on me
                    Ответить
                  • > Так вот 90% никогда не задают ни обработчик, ни проверяют код возврата функции.
                    По дефолту этот обработчик как раз делает аборт, поэтому все-таки по-тихому баг не пройдет. Но это отличный вектор для DoS атаки на "безопастный" код.
                    Ответить
        • "Осторожно, возможно, вы хотите собрать переносимое приложение?"
          Ответить
    • где 'Ы'?
      где тут c++?

      привет, cp-866
      Ответить
      • > где тут c++?
        Ну как же, #include "stdafx.h".
        Ответить
        • А разве в сишном режиме его нельзя юзать? Это же, если не туплю, просто файлик в который свалены все внешние инклуды, чтобы precompiled headers нормально работали?
          Ответить
          • Хм, ну раз уж минуснули, то поясните пожалуйста, для чего же нужен этот файл.
            Ответить
        • > for (int i=0; i<18; i++)
          А вот тут с++, т.к. msvc не умеет в С99.
          Ответить
    • Фикс: нужно создать pause.bat с содержимым:
      @cls
      @echo Гласная
      Ответить

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