ВОПРОС · Q&A

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

14 ответов 7,5 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

Разработать программу для вычисления логического выражения. Должно быть построено
логическое выражение, результат которого присваивается целочисленной переменной.
Результат выводится на экран в виде значения «1» - если истина и значения «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
 
прошу обратить внимание нужно составить ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ, т.е. if и tolower использовать нельзя
 
прошу обратить внимание нужно составить ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ
дайте определение логическому выражению
 
Примеры логических выражений:

(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
 
ну и в чем проблемы написать кучу or ( в С or это ||, если не ошибаюсь), аналогично такому (ch='y')or(ch='Y'), только вместо "y" перечислить все согласные, указав прописные и строчные?

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

Добавлено: а w - гласная? %)
 
ну и в чем проблемы написать кучу or ( в С or это ||, если не ошибаюсь), аналогично такому (ch='y')or(ch='Y'), только вместо "y" перечислить все согласные, указав прописные и строчные?
такой вариант был, но это на мой взгляд не рационально

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

есть у кого-нибудь варианты по поводу решения задачи?
 
а почему нельзя использовать tolower?

я её тоже использовала, мне написал преподаватель что:
использовать оператор if и функции из библитек string.h И ctype.h нельзя
 
есть у кого-нибудь варианты по поводу решения задачи?
есть еще такой вариант...
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

Добавлено:
я её тоже использовала, мне написал преподаватель что:
использовать оператор if и функции из библитек string.h И ctype.h нельзя
ну в таком случае тогда вот так
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')
 
а, латынь, точно.
Это я тут себя пыталась заставить сделать английский и как-то в голове с инглишем сассоциировалось.
сорри, я не права.
maryfly009
в С вроде есть короткая схема логических вычилений (насколько я помню), берешь частотный словарь и выстраиваешь рациональную последовательность условий для || :)
false это 0. гласных - меньше, выстраиваешь проверку на гласные !(ch == 'a' || ch == 'A' || ... )
 
!(ch == 'a' || ch == 'A' || ... )
кстати да этот вариант короче :) т.е.
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')
 
zeus - только теперь w считатся согласной, так как не учлось в гласных) вот такая она вредная буква...
 
спасибо большое всем за ответы!
 
кстати, лучше сперва строчные проверять, потом прописные. И проверить, что код попадает в буквенный диапазон, как писали выше... (('a' < t && t < 'z') || ('A' < t && t < 'Z')) && !(куча || )