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

Игнорирует cin в цикле. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Международная телефонная станция http://www.cyberforum.ru/cpp-beginners/thread26942.html
Привет Всем. Вот нам задали задачку, а я не понимаю как ее решить. На международной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована как двоичное дерево. Составить программу, которая: 1*) Обеспечивает начальное формирование картотеки в виде двоичного дерева; 2*) Производит вывод всей картотеки; 3*)...
C++ Создание мини теста на С люди добрые, помогите пожалуйста решить такого рода задачку на языке С: надо написать прогу, которая поочерёдно задаёт врозброс 10 вопросов(вопросы берутся не с файла). после каждого вопроса пользователь должен дать ответ. Если ответ верный - идёт переход на следующий вопрос. Если ответ неверный - прога предлагает ввести ответ ещё один раз. Если ответ неверный и после второго раза - идёт переход... http://www.cyberforum.ru/cpp-beginners/thread26941.html
Найти и напечатать слово, в котором содержится больше всего символов “А” C++
Дан текст, который содержит буквы и пропуски. Найти и напечатать слово, в котором содержится больше всего символов “А”. Словом считать последовательность букв, разделенных пропусками. помогите мне всего кода ненужно, только алгоритм нахождения.
Робот в лабиринте C++
Спасибо тебе loki ты клёвый кодер! У меня есть ещё одно задание, последние которое мне надо сдать, если сможешь помоги! Написать программа на тему "Робот в лабирине".Программа должна отображать очертания лабиринта и робота и позволять управлять движением робота по лабиринту с помощью клавиш на клавиатуре или кнопок мыши.При этом должны блокироваться "неправильные" попытки движения робота...
C++ где взять ответы из учебника Т.А.Павловская C/C++ http://www.cyberforum.ru/cpp-beginners/thread26888.html
Скажите пожалуйста где взять ответы из учебника Т.А.Павловская C/C++ или помогите решить 1 задачу к части 1. У меня есть свое решение, но неправильное.
C++ Смодулировать операцию деления двух действительных чисел в форме +/- m.n E K, где... Задание №1 Смодултровать операцию деления двух действительных чисел в форме +/- m.n E K, где сумарная длина мантиссы (m+n) - до 30 значащих цифр, а величена порядка К - до 5 цифр. Результат выдать форме +/- 0.m1 E K1! Задание №2 Слова текста из малых латинских букв записаны не менее чем через один пробел; текст оканчивается точко. БЕЗ ИСПОЛЬЗОВАНИЯ конструкции STRING: а) написать... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.03.2009, 02:58     Игнорирует cin в цикле.
По вашему обяснению он должен игнорить cin все-таки ограниченное количество раз.
По моему объяснению, ты должен сам сидеть, копаться, дизассемблировать, читать, чтобы добраться до истины. А в твоем случае, ее и копать-то не надо...
Если говорить по сути, то cin после ввода строки вообще не выполняется. Он выполняется один раз. А точнее читает поток ввода один раз. Видит, что ты напортачил с вводимыми данными и потом он уже не читает ничего из потока. То есть функция чтения даже не вызывается в иерархии оператора >>. А не вызывается она потому что установлен бит ошибки у потока.

Если бы ты сам захотел понять, что происходит, то дошел бы до того, что в случае со строкой программа меняет свое выполнение в конструкторе std::istream::sentry::sentry. После этого покопавшись в заголовочном файле istream ты бы наткнулся на:
* All the @c operator>> functions (aka <em>formatted input
* functions</em>) have some common behavior. Each starts by
* constructing a temporary object of type std::basic_istream::sentry
* with the second argument (noskipws) set to false. This has several
* effects, concluding with the setting of a status flag; see the
* sentry documentation for more.
*
* If the sentry status is good, the function tries to extract
* whatever data is appropriate for the type of the argument.
*
* If an exception is thrown during extraction, ios_base::badbit
* will be turned on in the stream's error state without causing an
* ios_base::failure to be thrown. The original exception will then
* be rethrown.
А потом бы, конечно, додумался проверить биты ошибок. И ты, конечно, полез бы куда-нибудь в инет, чтобы почитать про это больше... Например сюда:
http://library.forum.nokia.com/index...eam_chap3.html

Теперь мое объяснение более доступно для понимания? Если нет - то пофиг. Захочешь - разберешься. gdb в руки и вперед...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru