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

Зацикливание программы при вводе некорректных данных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
curseyouall
Сообщений: n/a
25.11.2011, 01:19     Зацикливание программы при вводе некорректных данных #1
Привет всем! Я совсем новенький в программировании на С++ (в школе чуток увлекался Бейсиком, но забросил). Три дня назад решил освоить С++. Спросите зачем? Та просто так, для общего развития, мало ли, в жизни пригодится. И вот написал свою ПЕРВУЮ программу (нет, это не "Hello World!") с использованием цикла do ... while. У всех переменных (их всего две) тип integer. Если переменной задать не целое число (cin>>nArg2, а символ или строку, цикл улетает в бесконечность. С переменными типа char и string я еще работать не умею, но это дело наживное). Ниже приведу код.

Добавлено через 23 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<iostream.h>
#include<locale.h>
int main(int argc, char* pszArgs[])
{
    setlocale(LC_ALL,"Rus");
    int nArg1=26;
    int nArg2;
    do
    {
    cout<<"Сколько мне лет?: \n";
    cin>>nArg2;
    if (nArg1 == nArg2)
    {
                 cout<<"Малацца, бро! Идем бухать!\n";
    }
                 else
                 {
                     cout<<"лососни тунца!\n";
                 }
    }while(nArg1 != nArg2);
                 cin>>nArg1;
    return 0;
}
 Комментарий модератора 
Код выделяем тегами!

 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
25.11.2011, 01:28     Зацикливание программы при вводе некорректных данных #2
curseyouall,

Я думаю, происходит следующее. Когда вы вводите букву, то операция ввода завершается с ошибкой, так как не встретила цифры. При этом ваш введенный символ остался в буфере ввода. Затем итерация цикла повторяется. Операция ввода видет, что буфер не пуст (там находится ваш символ), и пытается снова прочитать число. Опять возникает ошибка, и все повторяется заново. Вам надо делать различные проверки после вывода, как, например, cin.good() и пропускать символы, которые не являются цифрой.
curseyouall
Сообщений: n/a
25.11.2011, 01:48     Зацикливание программы при вводе некорректных данных #3
Стыдно признаться, но я учу программирование по книжке "С++ для чайников". А хотя... Главное начать, правда?
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
25.11.2011, 01:54     Зацикливание программы при вводе некорректных данных #4
curseyouall, почитайте про std:isdigit
Yandex
Объявления
25.11.2011, 01:54     Зацикливание программы при вводе некорректных данных
Ответ Создать тему
Опции темы

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