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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 11:37   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию Ввод данных с консоли в цикле

Сразу перейду к делу.
Написал программу и теперь пишу валидатор данных полученных от пользователя. В чем проблема: у меня в случае введения вместо числа чего-то другого программа начинает следующую итерацию.
На первой итерации программа зчитала данные с клавиатуры, но вот на второй итерации не хочет читать нагло игнор cin. Пробовал cin.clear (), но ничего не помогло

Код:
while(!myMap.IsReady()) {
         cout << Convert("Розстановка кораблів") << endl;

         myMap.ShowMap();

         cout << Convert("Введіть число палуб корабля ");
         cin >> totalPal;

         if(!isdigit(totalPal)) {
              cout << Convert("В якості параметра повинно бути число") << endl;
              cout << Convert("Для продовження нажміть будь-яку клавішу") << endl;
              getch();
              clrscr();
              totalPal = NULL;
              cin.clear();
              continue;
         }
}
Anubys вне форума Ответить с цитированием
Старый 06.05.2012, 13:56   #2
Trigger man
Пользователь
 
Аватар для Trigger man
 
Регистрация: 03.05.2012
Сообщений: 21
По умолчанию

Код:
cin.clear();
while ( cin.get() != '\n' ) continue;
Может быть даже вот так
Код:
if (cin >> totalPay)  // Если ввод удачный
  ...

Последний раз редактировалось Trigger man; 06.05.2012 в 13:59.
Trigger man вне форума Ответить с цитированием
Старый 07.05.2012, 10:50   #3
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Попробуйте fflush(stdin);
rmv240899 вне форума Ответить с цитированием
Старый 07.05.2012, 11:45   #4
ERAGORN
Пользователь
 
Аватар для ERAGORN
 
Регистрация: 02.01.2012
Сообщений: 46
По умолчанию

Код:
// ...
do{
    cout << Convert("Введіть число палуб корабля: "); 
    cin >> totalPal;
 
    if ( !isdigit(totalPal) ){
        cout << Convert("Що ж вы робите - повинно бути число, а ну ще раз.\n") << endl;
        continue;
    }
}while ( false );
// ...
ERAGORN вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на ввод букв в консоли на C++ Артем Ковальчук Общие вопросы C/C++ 6 02.12.2014 21:57
Ввод текста в консоли Armind Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.12.2011 12:06
ввод данных из консоли.. ява Julila Помощь студентам 1 05.10.2011 21:05
Ввод строки из консоли matrasa Общие вопросы C/C++ 4 06.12.2010 12:21
Как осуществить ввод данных в одном цикле, их обработку в другом, и вывод результатов в третьем? ReM Паскаль, Turbo Pascal, PascalABC.NET 5 11.11.2008 18:21