• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы maryfly009
  • Дата начала
M

maryfly009

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

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

спасибо за ответы!
 
Z

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
 
M

maryfly009

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

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
 
H

hosm

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

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

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

maryfly009

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

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

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

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

Добавлено:
я её тоже использовала, мне написал преподаватель что:
использовать оператор 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')
 
H

hosm

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

hosm

zeus - только теперь w считатся согласной, так как не учлось в гласных) вот такая она вредная буква...
 
H

hosm

кстати, лучше сперва строчные проверять, потом прописные. И проверить, что код попадает в буквенный диапазон, как писали выше... (('a' < t && t < 'z') || ('A' < t && t < 'Z')) && !(куча || )
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!