Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Код:
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, 15:29   #2
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

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

Цитата:
Сообщение от KAMLS Посмотреть сообщение
while будет работать пока выполняется одно из условий, а сразу два символа вы не введёте
Так я и не собираюсь вводить сразу два символа. Программа предлагает ввести один символ, далее символ присваивается переменой sim, затем с помощью while проверяется допустимый ли был ввод (т.е. '<' или '>'), если нет, то предлагает ввести символ еще раз.
Ах, ну да, здесь должно быть или:
Код:
printf("Допускаются только знаки '<' или '>'\n");
но это проблему все равно не решит.
Sinli вне форума Ответить с цитированием
Старый 22.09.2018, 16:53   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
логическая операция или(||) Мой повелитель Общие вопросы C/C++ 2 24.03.2016 22: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 13:27
Логическая ошибка C++ slim>>> Помощь студентам 2 24.01.2010 18:32