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

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

  1. maryfly009

    maryfly009 Гость

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

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

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

    zeus Гость

    Да тут все просто, с этой задачкой даже школьник справиться)))
    Код (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 Гость

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

    zeus Гость

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

    maryfly009 Гость

    Примеры логических выражений:

    (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 *

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

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

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

    maryfly009 Гость

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

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

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

    zeus Гость

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

    maryfly009 Гость

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

    zeus Гость

    есть еще такой вариант...
    Код (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 *

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

    zeus Гость

    кстати да этот вариант короче :) т.е.
    Код (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 *

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

    maryfly009 Гость

    спасибо большое всем за ответы!
     
  15. hosm

    hosm * so what *

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

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