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

"Нет выхода" из цикла - C++

Восстановить пароль Регистрация
 
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
19.09.2010, 21:01     "Нет выхода" из цикла #1
C++
1
2
3
4
5
6
7
8
9
10
11
    while (choice != 'y' || choice != 'n')
            {
                cout<<"Copying massive's size is larger than destination massive's size!\n";
                cout<<"Do you want to change the destination massive size ? (y/n)\n-> ";
                //cin.get(); 
                cout<<flush;
                choice = (char)getch();
                //cin>>choice;
                cout<<flush;
                cout<<choice<<"\n";
            }
При вводе 'y' проверяю в Debugе'ре, что choice действительно равен 'y', но цикл продолжает работу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2010, 21:01     "Нет выхода" из цикла
Посмотрите здесь:

"Перепрыгивание" компилятора к части кода после выхода из функции C++
"has stopped working" - зависает после цикла C++
C++ Даны две строки. Если они начинаются с одинаковых символов, то напечатать "ДА", иначе - "НЕТ"
C++ Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
C++ Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
19.09.2010, 21:41     "Нет выхода" из цикла #2
C++
1
while (choice != 'y' && choice != 'n')
Такое условие должно быть.
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
19.09.2010, 23:13  [ТС]     "Нет выхода" из цикла #3
Цитата Сообщение от besstiaa Посмотреть сообщение
C++
1
while (choice != 'y' && choice != 'n')
Такое условие должно быть.
Спасибо, но по логике || тоже должно всё отлично работать
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
19.09.2010, 23:57     "Нет выхода" из цикла #4
Цитата Сообщение от alexsvk Посмотреть сообщение
Спасибо, но по логике || тоже должно всё отлично работать
это как же? странная у вас логика знаете ли. по вашим рассуждениям, чтобы выйти из цикла переменная должна быть равна двум значениям одновременно
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
20.09.2010, 00:03  [ТС]     "Нет выхода" из цикла #5
Цитата Сообщение от fasked Посмотреть сообщение
это как же? странная у вас логика знаете ли. по вашим рассуждениям, чтобы выйти из цикла переменная должна быть равна двум значениям одновременно
Не понял Вас совершенно. Оператор "||" - это логическое "или". В моём случае выход будет в 2-х случаях: либо пользователь вводит 'n', либо 'y'.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.09.2010, 00:09     "Нет выхода" из цикла #6
Цитата Сообщение от alexsvk Посмотреть сообщение
В моём случае выход будет в 2-х случаях: либо пользователь вводит 'n', либо 'y'.
и в обоих случаях цикл продолжается
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.09.2010, 00:10     "Нет выхода" из цикла #7
почитайте только что состоявшийся
диалог
-
Lavr 20 сентября 2010 г.
while (choice != 'y' && choice != 'n')
Вот это меня кстати тоже всегда удивляло.
Что именно так, ибо
while(choice!='y'||choice!='n')
Первое условие возвращает 0 и второе 0, если не равны. 0||0=0
-
fa 20 сентября 2010 г.
0:00 чо!?
-
Lavr 20 сентября 2010 г.
0:00 э. как чо?

0 0 0
0 1 1
1 0 1
1 1 1
*
fa 20 сентября 2010 г.
0:01 подумай еще раз
*
Lavr 20 сентября 2010 г.
0:02 При и

0 0 0
0 1 0
1 0 0
1 1 1

При или соответственно

0 0 0
0 1 1
1 0 1
1 1 1

При XOR

0 0 0
0 1 1
1 0 1
1 1 0
0:02 оййй
0:03 Первое условие возвращает 1 и второе 1, если не равны. 1||1=1
0:03 Что-то неверно?
*
fa 20 сентября 2010 г.
0:04 while(i != 1 || i != 2) {
printf("> ");
scanf("%d", &i);
}
0:04 ввожу 3
0:04 получается true
0:04 ввожу 5 - true
0:04 ввожу 2 - true
*
Lavr 20 сентября 2010 г.
0:04 ну да.
0:04 а если и
0:04 тогда false если не 2
*
fa 20 сентября 2010 г.
0:04 при 2, true || false = true
*
Lavr 20 сентября 2010 г.
0:05 да
*
fa 20 сентября 2010 г.
0:05 соответственно цикл бесконечеен
0:05 true && false = false
false && true = false
*
Lavr 20 сентября 2010 г.
0:05 Ну да.
0:06 while(i != 1 || i != 2) {

брякнется только если и 1 и 2?
*
fa 20 сентября 2010 г.
0:06 false && false - случай когда переменная равна двум значениям одновременно
*
Lavr 20 сентября 2010 г.
0:06 что невозможно
*
fa 20 сентября 2010 г.
0:06 да да
*
Lavr 20 сентября 2010 г.
0:06 все. извини за тупость)
*
fa 20 сентября 2010 г.
0:06 да ьбывает
0:07 я раньше тоже как то по этому поводу зависал DDD
*
Lavr 20 сентября 2010 г.
0:07 Иди объясняй ему)
на эту тему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2010, 08:23     "Нет выхода" из цикла
Еще ссылки по теме:

C++ Почему переменная "d" не была удалена из стека после выхода из функции?
C++ Будет ли "жив" объект после выхода из функции
Ошибка "error C2446: :: нет преобразования "int" в "char *" C++

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

Или воспользуйтесь поиском по форуму:
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
20.09.2010, 08:23  [ТС]     "Нет выхода" из цикла #8
Цитата Сообщение от fasked Посмотреть сообщение
почитайте только что состоявшийся на эту тему
Спасибо.
Yandex
Объявления
20.09.2010, 08:23     "Нет выхода" из цикла
Ответ Создать тему
Опции темы

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