Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 22.09.2018, 14:42   #1
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
Репутация: 10
По умолчанию Не работает логическая операция

Код:

b:              sim = get_first();
                while (sim != '>' || sim != '<')
                {
                        printf("Допускаются только знаки '<' и '>'\n");
                        goto b;
                }

Добрый день, никак не получается прописать логическую операцию в функции while. Пробовал и скобки поставить, чтобы соблюдались приоритеты, хотя скобки здесь вроде как и не нужны...

Пробовал и так
Код:

while ((sim = get_first()) != '>' || sim != '<')
                        printf("Допускаются только знаки '<' и '>'\n");

и даже вот такое безобразие пробовал:
Код:

 while ((sim = get_first()) != '>' || '<')
                        printf("Допускаются только знаки '<' и '>'\n");

По итогу, из функции while программа меня не выпускает, какой бы символ я не ввел.

P.S функция get_first() возвращает первый символ, который вводит пользователь.

Подскажите, пожалуйста, как правильно прописать операцию 'ИЛИ'.
Спасибо.
Sinli вне форума   Ответить с цитированием
Старый 22.09.2018, 16:29   #2
KAMLS
Участник клуба
 
Регистрация: 09.04.2017
Сообщений: 534
Репутация: 10
По умолчанию

while будет работать пока выполняется одно из условий, а сразу два символа вы не введёте
KAMLS вне форума   Ответить с цитированием
Старый 22.09.2018, 17:28   #3
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
Репутация: 10
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
while будет работать пока выполняется одно из условий, а сразу два символа вы не введёте
Так я и не собираюсь вводить сразу два символа. Программа предлагает ввести один символ, далее символ присваивается переменой sim, затем с помощью while проверяется допустимый ли был ввод (т.е. '<' или '>'), если нет, то предлагает ввести символ еще раз.
Ах, ну да, здесь должно быть или:
Код:

printf("Допускаются только знаки '<' или '>'\n");

но это проблему все равно не решит.
Sinli вне форума   Ответить с цитированием
Старый 22.09.2018, 17:53   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,614
Репутация: 5352
По умолчанию

sim = get_first();
while (sim != '>' && sim != '<')
{
printf("Допускаются только знаки '<' или '>'\n");
sim = get_first();
}
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 22.09.2018, 18:13   #5
KAMLS
Участник клуба
 
Регистрация: 09.04.2017
Сообщений: 534
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
while (sim != '>' && sim != '<')
Вот в этом выражении while проверяет чтобы выполнялись оба условия, и если хоть одно не выполняется, то цикл прервётся.
У вас же ранее, хоть одно условие но выполнялось, поэтому цикл не прерывался.
Ибо использовалось короткое "или".
KAMLS вне форума   Ответить с цитированием
Старый 22.09.2018, 18:57   #6
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
Репутация: 10
По умолчанию

Все получилось, спасибо вам огромное.
Я почему-то не сообразил, что здесь нужна другая операция.
Теперь все понял.
Sinli вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
логическая операция или(||) Мой повелитель Общие вопросы C/C++ 2 24.03.2016 23:42
Не работает операция RevenGGe Общие вопросы Delphi 12 16.09.2012 21:18
Не работает операция "слияния" в сетях Петри Ksy Общие вопросы C/C++ 0 08.12.2011 02:22
Логическая операция xor Violetta_21 Помощь студентам 1 12.02.2011 14:27
Логическая ошибка C++ slim>>> Помощь студентам 2 24.01.2010 19:32


07:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru