Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.07.2016
Сообщений: 23
1

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

12.07.2016, 00:00. Показов 1120. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
double ko;
     do
     {
         cout << "Для однослойной обмотки обмоточный коэффицент равен 0.96, для двуслойной обмотки 0.92:";
         cin >> ko;
     } while (ko != 0.92 && ko != 0.96);
По моей задумке если ko не равно одному из вариантов то цикл замкнется и будет предлагать в вести одно из двух значений пока этого не случится, так и происходит (Хотя "&&" - это "и", то есть если один из операндов ложь то все выражения ложь и цикл замыкается, то есть если я ввиду 0,92 то второе условие не выполнится и цикл замкнется. Но этого не происходит). То есть он не должен работать, но он работает.

А вот такая запись должна работать, но она не работает.

C++
1
2
3
4
5
6
double ko;
     do
     {
         cout << "Для однослойной обмотки обмоточный коэффицент равен 0.96, для двуслойной обмотки 0.92:";
         cin >> ko;
     } while (ko == 0.92 || ko == 0.96);
ведь "||" - это "или", то есть если один из операндов ложь, а другой истина то все выражения истина,
то есть если ko будет равно 0,92 или 0,96 то программа пойдет дальше, но этого не происходило. Почему? Где я туплю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2016, 00:00
Ответы с готовыми решениями:

Записать логические выражения, используя условные операторы, операции отношений и логические операции
Записать логические выражения, используя условные операторы, операции отношений и логические...

Логические выражения
Выражение if((13/13)) - Результатом будет 1. Это выражение считается правдой, так как ответ...

Логические выражения
Выдать на экран значение true или false в зависимости от того является ли введённое число х...

Логические выражения
Привет всем, вообще не понимаю как делается Таблица Истинности(. Прошу помощи, задание на скрине...

4
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 17
12.07.2016, 00:09 2
Это цикл с пост условием, он работает
Пока выполняется условие, а таблица истинности для логического или:
1 1 = 1
1 0 = 1
0 1 = 1
0 0 = 0

Добавлено через 2 минуты
Т.е он выйдет если пользователь введет не одно из этих чисел
1
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
12.07.2016, 00:12 3
Vincent Gogh,
Цитата Сообщение от Vincent Gogh Посмотреть сообщение
то есть если один из операндов ложь то все выражения ложь и цикл замыкается
Вывод неверный. Верно, что если одно выражение ложь, то и все ложь. Но цикл выполняется только тогда,когда условие верно.

Для большей понятности ваше условие можно переписать так:

C++
1
while (!(ko == 0.92 || ko == 0.96))
Тут условие выхода более очевидное. Посмотрите закон Де Моргана.
1
0 / 0 / 0
Регистрация: 11.07.2016
Сообщений: 23
12.07.2016, 00:26  [ТС] 4
Спасибо, что объяснили)) Совсем запутался с логическими выражениями и циклами.
0
Модератор
Эксперт С++
13727 / 10923 / 6479
Регистрация: 18.12.2011
Сообщений: 29,156
12.07.2016, 07:05 5
Vincent Gogh, Не стоит для чисел double использовать проверку на равенство,
т.к. такие числа приблизительные и сравнение может не получиться.
В таких случаях надо делать так
C++
1
2
3
4
5
6
7
8
9
10
      int t;
     do
     {
         cout << "Введите 1 для однослойной обмотки или 2 - для двухслойной обмотки:";
         cin >> t;
         if(t==1)
            ko=0.92;
         else  if(t==2)
            ko=0.96;
     } while (t<1 || t>2);
0
12.07.2016, 07:05
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2016, 07:05
Помогаю со студенческими работами здесь

Логические выражения
При любом раскладе даже когда С не равно А*В, оно считывает как правильно, в чем проблема? ...

Логические выражения
Вычислите значение логического выражения для заданных переменных bool a=false, b=true, c=false,...

Логические операции и выражения
1)Складіть умови у вигляді тернарних операцій: Ціле двозначне число X складається з однакових...

Побитовые логические выражения
Пишу программу для побитовых логических операций. Приоритет ! = 4, ~ = 4, &amp; = 3, ^ = 2, | = 1. Мои...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru