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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
curseyouall
Сообщений: n/a
#1

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

25.11.2011, 01:19. Просмотров 1135. Ответов 3
Метки нет (Все метки)

Привет всем! Я совсем новенький в программировании на С++ (в школе чуток увлекался Бейсиком, но забросил). Три дня назад решил освоить С++. Спросите зачем? Та просто так, для общего развития, мало ли, в жизни пригодится. И вот написал свою ПЕРВУЮ программу (нет, это не "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;
}
 Комментарий модератора 
Код выделяем тегами!

 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 01:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зацикливание программы при вводе некорректных данных (C++):

Обработку исключений при вводе некорректных данных - C++
#include &lt;iostream&gt; #include &lt;signal.h&gt; using namespace std; class Student{public: string Status,Speciality,Name,LName; ...

Обработка исключений при вводе некорректных данных - C++
День добрый, начал разбираться с исключениями, пока не совсем понимаю в чем их удобство и зачем они нужны, какие преимущества и т.д... но...

Зацикливание программы при вводе - C++
Добрый день. У меня почему то происходит зацикливание программы при вводе строки с пробелами. Есть структураstruct sklad { char...

Зацикливание при вводе из файла - C++
требуется ввести из файла в вектор данные типа float. программа зацикливается при выводе целой части вещественного числа. #include...

Задачка про зацикливание при вводе не числа (решено но нужна консульт) - C++
Все решено ошибка найдена если есть идеи могут предложить лучший алгоритм int NumberOfElements=0; //глобальная переменная int...

Как сделать очередь и убрать паузу программы при вводе данных? - C++
Написал прогу, при вводе новый параметров детали программа останавливается, как можно переделать, что бы этого не было? И как сделать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
25.11.2011, 01:28 #2
curseyouall,

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

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль - C++
Что надо подключить что бы в консоли писать русскими буквами? cin &gt;&gt; kol; cin &gt;&gt; x; cout &lt;&lt; &quot;У вас есть &quot; &lt;&lt; kol &lt;&lt; &quot; &quot; &lt;&lt; x; ...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? - C++
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

защита от некорректных данных в конструкторе - C++
Здравствуйте, вот пишу довольно тривиальный класс о представлении треугольника. Поля класса - углы и стороны. По моему мнению для...

При вводе полей структуры завершается работа программы - C++
Решаю задачи по Прата. При вводе полей структуры резко завершает программу. #include&lt;iostream&gt; using namespace std; struct CandyBar{ ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.11.2011, 01:54
Ответ Создать тему
Опции темы

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