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

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

12.07.2016, 00:00. Показов 1108. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
Модератор
Эксперт С++
13686 / 10892 / 6469
Регистрация: 18.12.2011
Сообщений: 29,069
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2016, 07:05
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru