Форум программистов, компьютерный форум CyberForum.ru

Логическое выражение - C++

Восстановить пароль Регистрация
 
arhorn3
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 10
23.11.2014, 00:06     Логическое выражение #1
Записать логическое выражение, которое является истинным, когда число N чётное делится на 7, но не делится на 11 и 13 без остатка.
Правильно но ли я понял условие?
Пишу в С++ Builder, формы.

C++
1
2
3
4
5
6
bool p=false;
        int n=StrToInt(Edit1->Text);
 
        if (n%2==0 && n%7==0 && n%13!=0 && n%11!=0) p=true;
        if (p) ShowMessage("Истина");
                else ShowMessage("Ложь");
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fullgean
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 3
23.11.2014, 00:13     Логическое выражение #2
arhorn3, вроде да вот такой же код на паскале
Pascal
1
((n mod 7)=0 and (n mod 11)<>0) and ((n mod 13)<>0)
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2784 / 1430 / 393
Регистрация: 18.10.2014
Сообщений: 2,626
23.11.2014, 00:34     Логическое выражение #3
Цитата Сообщение от arhorn3 Посмотреть сообщение
Правильно но ли я понял условие?
Логическое выражение составлено правильно. Можно было просто прямо присвоить результат выражения в 'p', а не выстраивать if-ы

C++
1
p = n % 2 == 0 && n % 7 == 0 && n % 13 != 0 && n % 11 != 0;
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
23.11.2014, 00:42     Логическое выражение #4
Цитата Сообщение от arhorn3 Посмотреть сообщение
if (n%2==0 && n%7==0 && n%13!=0 && n%11!=0) p=true;
тавтология
гораздо проще( и понятней)
C
1
2
3
4
if (n%2==0 && n%7==0 && n%13!=0 && n%11!=0)
      ShowMessage("Истина");
 else
        ShowMessage("Ложь");
Добавлено через 4 минуты
Цитата Сообщение от arhorn3 Посмотреть сообщение
когда число N чётное делится на 7,
это значит делится на 14

можно упростить
C
1
2
3
4
if (n%14==0 && n%13!=0 && n%11!=0)
       ShowMessage("Истина");
else 
       ShowMessage("Ложь");
далее
ложью в Си является 0 истиной не 0
следовательно выражение можно записать так
C
1
2
3
4
if (!(n%14) && n%13 && n%11 )
       ShowMessage("Истина");
else 
       ShowMessage("Ложь");
arhorn3
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 10
23.11.2014, 03:00  [ТС]     Логическое выражение #5
А как проверить, что было введено именно целое число? Вроде бы остаток от деления только на целые работает.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
23.11.2014, 03:11     Логическое выражение #6
arhorn3,
C++
1
2
3
int i;
    std::cin >> i;
    std::cout << i;
Введите НЕ целое число и посмотрите на вывод, дробная часть отбросится.

Ну и ещё для бонусного понимания:
C++
1
2
    double ff = 123.455f;
    std::cout << std::boolalpha << (double(int(ff)) == ff) << std::endl;
arhorn3
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 10
23.11.2014, 12:14  [ТС]     Логическое выражение #7
Введите НЕ целое число и посмотрите на вывод, дробная часть отбросится.
Мне наоборот нужно проверить что введено именно целое, и если нет, то вывести ошибку.
Иначе могут ввести например 14,06, дробная часть отбросится и на выходе мы получим Истину
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2014, 14:51     Логическое выражение
Еще ссылки по теме:

ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ В УСЛОВНОМ ОПЕРАТОРЕ В c++ C++
Логическое выражение преобразовать в бинарное дерево C++
Объясните пожалуйста логическое выражение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
23.11.2014, 14:51     Логическое выражение #8
arhorn3,
C++
1
(double(int(ff)) == ff)
Yandex
Объявления
23.11.2014, 14:51     Логическое выражение
Ответ Создать тему
Опции темы

Текущее время: 01:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru