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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Geo88
0 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 9
#1

do while - C++

16.09.2012, 18:59. Просмотров 346. Ответов 5
Метки нет (Все метки)

Помогите , пожалуйста .
Как сделать проверку на символы ?
А то программа начитает зацикливаться , например

C++ (Qt)
1
2
3
4
5
6
    do 
     {
       cout <<"height of the fall  H = ";
       cin >> H;
     }
    while (H <= 0 || H > 10000);
Что нужно тут дописать ?



И еще вопрос по этой же теме

C++ (Qt)
1
2
3
4
5
6
    do 
     {
              "Do You want continue ? Y/N = "
               cin >> S;
     }
    while (???);
и что тут нужно сделать что при Y программа начала свой повтор , а при N закончила это цикл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
16.09.2012, 19:04 #2
например, так
C++
1
2
3
4
5
do {
  cout << "Do You want continue ? Y/N = ";
  cin >> S; 
  if (S != 'Y') break;
} while (true);
1
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
16.09.2012, 19:09 #3
в первом случае так
C++
1
2
3
4
5
6
7
do
    {
        std::cout << "height = ";
        (std::cin >> height).clear();
        std::cin.sync();
    }
    while(height <= 0 || height > 1000);
1
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
16.09.2012, 21:01 #4
igorrr37, можете объяснить, что же значат cin.clear() и cin.sync()?

Не по теме:

не посылая меня на cplusplus.com

0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
16.09.2012, 21:35 #5
Цитата Сообщение от Dani Посмотреть сообщение
не посылая меня на cplusplus.com
Да, конечно. Посмотри на cppreference.com :-)
1
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
16.09.2012, 21:46 #6
При вводе текста в консоль и нажатии ентер данные перемещаются из буфера консоли(он опустошается) в буфер потока cin. При последующем вызове sync() очищает буфер cin и пробует загрузить новые данные с консоли, а т.к. последний пуст, то и cin'овский остаётся пустым. Когда флаг goodbit сброшен, cin'овские ф-ции не работают, в т.ч. и sync(), поэтому сперва вызываем clear()
2
Yandex
Объявления
16.09.2012, 21:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru