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

Цикл do...while(); - C++

Восстановить пароль Регистрация
 
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
21.01.2011, 17:35     Цикл do...while(); #1
Привет!
Объясните, пожалуйста, почему не завершается цикл при следующем написании?:
C++
1
2
3
4
5
6
7
8
9
10
        do
        {
            cout << "Введите тип диска (c/d): "; cin >> ch;
            if (ch == 'c')
                disk_type = CD;
            else if(ch=='d')
                disk_type = DVD;
            else
                cout << "Указан неверный тип диска, попробуйте еще раз!\n";
        } while((ch != 'c') || (ch != 'd'));
А вот если заменить условие на:
C++
1
while( !(ch == 'c' || ch == 'd'));
То все будет работать правильно! Как так? Ведь, как мне кажется, смысл этих условий одинаковый - выйти из цикла, как только переменная ch будет равна 'c' или 'd'
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2011, 17:35     Цикл do...while();
Посмотрите здесь:

Цикл с параметром и цикл с условием C++
Цикл while (на С) C++
C++ Цикл for/Цикл while Помогите срочно пожалуйста...
C++ Цикл
C++ Цикл while
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lagobas
3 / 3 / 0
Регистрация: 22.12.2010
Сообщений: 33
21.01.2011, 17:42     Цикл do...while(); #2
если допустим ты ввел диск с, то
C
1
(ch != 'd')
у тебя будет верно))Так что верно только
C
1
while( !(ch == 'c' || ch == 'd'));
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
21.01.2011, 17:46  [ТС]     Цикл do...while(); #3
О. Я прозрел! Спасибо!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.01.2011, 17:48     Цикл do...while(); #4
Надо так
C++
1
while(ch != 'c' && ch != 'd');
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
21.01.2011, 17:56  [ТС]     Цикл do...while(); #5
Да, я понял. Просто при моем первом варианте, одно из под-условий всегда будет не исполняться. Спасибо.
Yandex
Объявления
21.01.2011, 17:56     Цикл do...while();
Ответ Создать тему
Опции темы

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