логическое выражение

Тема в разделе "C/C++/C#", создана пользователем maryfly009, 15 апр 2010.

  1. maryfly009

    maryfly009 Гость

    Репутация:
    0
    Здравствуйте уважаемые программисты! Помогите решить задачу.

    Разработать программу для вычисления логического выражения. Должно быть построено
    логическое выражение, результат которого присваивается целочисленной переменной.
    Результат выводится на экран в виде значения «1» - если истина и значения «0» - если
    ложь. Дан символ. Проверить: является ли данный символ согласной буквой латинского
    алфавита (независимо от регистра).

    спасибо за ответы!
     
  2. zeus

    zeus Гость

    Репутация:
    0
    Да тут все просто, с этой задачкой даже школьник справиться)))
    Код (C++):
    #include <ctype.h>

    int logical(const char s)
    {
    const char t = (char)tolower(s);
    const char tb[19] = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'x', 'z'};

    for (int i = 0; i < 19; ++i)
    {
    if (t == tb[i]) return 1;
    } // for

    return 0;
    } // logical
     
  3. maryfly009

    maryfly009 Гость

    Репутация:
    0
    прошу обратить внимание нужно составить ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ, т.е. if и tolower использовать нельзя
     
  4. zeus

    zeus Гость

    Репутация:
    0
    дайте определение логическому выражению
     
  5. maryfly009

    maryfly009 Гость

    Репутация:
    0
    Примеры логических выражений:

    (x>=0)and(x<=10) (ch='y')or(ch='Y') (x=5)or(y=1)

    (x+1>0)and(x+1<10) or (y>0)and(y<2)


    int log = (x>=0)and(x<=10);
    если x = 5, то log = 1
    если x = 15, то log = 0
     
  6. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.445
    Симпатии:
    8
    ну и в чем проблемы написать кучу or ( в С or это ||, если не ошибаюсь), аналогично такому (ch='y')or(ch='Y'), только вместо "y" перечислить все согласные, указав прописные и строчные?

    Добавлено: кстати, если - это if, который вы сказали, нельзя использовать :)
    как-то нелогично )))

    Добавлено: а w - гласная? %)
     
  7. maryfly009

    maryfly009 Гость

    Репутация:
    0
    такой вариант был, но это на мой взгляд не рационально

    это мне так преподаватель ответил, после проверки задания

    есть у кого-нибудь варианты по поводу решения задачи?
     
  8. zeus

    zeus Гость

    Репутация:
    0
    а почему нельзя использовать tolower?
    здесь пишут, что вроде да...
     
  9. maryfly009

    maryfly009 Гость

    Репутация:
    0
    я её тоже использовала, мне написал преподаватель что:
    использовать оператор if и функции из библитек string.h И ctype.h нельзя
     
  10. zeus

    zeus Гость

    Репутация:
    0
    есть еще такой вариант...
    Код (C++):
    #include <ctype.h>

    int logical(const char s)
    {
    const char t = (char)tolower(s);
    return ('a' < t && t < 'e') || ('e' < t && t < 'i') || ('i' < t && t < 'o') || ('o' < t && t < 'u') || (t == 'v') || (t == 'x') || (t == 'z');
    } // logical
    Добавлено:
    ну в таком случае тогда вот так
    Код (C++):
    ('A' < t && t < 'E') || ('E' < t && t < 'I') || ('I' < t && t < 'O') || ('O' < t && t < 'U') || (t == 'V') || (t == 'X') || (t == 'Z')
    || ('a' < t && t < 'e') || ('e' < t && t < 'i') || ('i' < t && t < 'o') || ('o' < t && t < 'u') || (t == 'v') || (t == 'x') || (t == 'z')
     
  11. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.445
    Симпатии:
    8
    а, латынь, точно.
    Это я тут себя пыталась заставить сделать английский и как-то в голове с инглишем сассоциировалось.
    сорри, я не права.
    maryfly009
    в С вроде есть короткая схема логических вычилений (насколько я помню), берешь частотный словарь и выстраиваешь рациональную последовательность условий для || :)
    false это 0. гласных - меньше, выстраиваешь проверку на гласные !(ch == 'a' || ch == 'A' || ... )
     
  12. zeus

    zeus Гость

    Репутация:
    0
    кстати да этот вариант короче :) т.е.
    Код (C++):
    !(t == 'a' || t == 'A' || t == 'e' || t == 'E' || t == 'i' || t == 'I' || t == 'o' || t == 'O' || t == 'u' || t == 'U' || t == 'y' || t == 'Y')
     
  13. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.445
    Симпатии:
    8
    zeus - только теперь w считатся согласной, так как не учлось в гласных) вот такая она вредная буква...
     
  14. maryfly009

    maryfly009 Гость

    Репутация:
    0
    спасибо большое всем за ответы!
     
  15. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.445
    Симпатии:
    8
    кстати, лучше сперва строчные проверять, потом прописные. И проверить, что код попадает в буквенный диапазон, как писали выше... (('a' < t && t < 'z') || ('A' < t && t < 'Z')) && !(куча || )
     
Загрузка...
Похожие Темы - логическое выражение
  1. seoman2
    Ответов:
    0
    Просмотров:
    23
  2. rakot
    Ответов:
    2
    Просмотров:
    2.027
  3. Avicii
    Ответов:
    0
    Просмотров:
    1.323

Поделиться этой страницей