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

Отслеживание ввода данных в потоке cin - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Операция "остаток от деления" http://www.cyberforum.ru/cpp-beginners/thread968980.html
Здравствуйте , помогите , пожалуйста , разобраться с операцией "остаток от деления". Никак не могу понять её смысл . Почему, например , 1%2=1 ? Заранее спасибо.
C++ Найти, сколько чисел на отрезке начинаются с цифры 8 в шестнадцатеричной записи Написать структурированную программу: Найти, сколько чисел на отрезке http://www.ict.edu.ru/ft/003627/lect1.pdf Помогите, пожалуйста) Добавлено через 29 минут может кто-нибудь помочь с этим? хотя бы на си++ Пожалуйста) http://www.cyberforum.ru/cpp-beginners/thread968964.html
Многопоточное перемножение многочленов C++
Доброго времени суток. Уважаемые программисты помогите сдать зачет преподу по фамилии Дябилкин (не шутка). Фамилия соответствует Задание следующее Нужно написать многопоточную программу перемножения двух многочленов А n-ой степени и В m-ой степени. На входе 2 массива p и q (коэф А и В) длины n+1 и m+1 соотвественно. Программа должна записать результат в массив С длинны m+n+1. Каждый поток...
C++ Вертикальная табуляция \v
Объясните , пожалуйста ,в чём состоит задача вертикальной табуляции . Почему при запуске программы печатает какой-то не понятный символ? cout<<"\v Табуляция"; И ещё такой вопрос: при горизонтальной табуляции сколько символов отводится под саму табуляцию(отступ)?
C++ Указатель на функцию http://www.cyberforum.ru/cpp-beginners/thread968955.html
Скажите, пожалуйста, что такое в С++ указатель на функцию) Сколько инфы не читал - ничего не понял.
C++ Ошибка Установки Visual Studio C# Express. Не устанавливается почему то VC 9.0 Runtime, перепробовал уже все, в чем может быть проблема? http://cs419019.vk.me/v419019580/beab/tY5oYYLd0Mk.jpg подробнее

Показать сообщение отдельно
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1

Отслеживание ввода данных в потоке cin - C++

04.10.2013, 18:03. Просмотров 358. Ответов 1
Метки (Все метки)

Добрый вечер.

Предположим такой код:

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
void fiterations(int &iter_i)
{
    if (!cin)
    {
        cout << "Некорректный ввод данных";
        //cin.clear();
        //cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }
    else
    {
        (cin >> iter_i).get();  
    }
}
 
int main ()
{
int iter;
string str;
///////
///////
fiterations(iter);
////////
return 0;
}

По условию задачи, нужно ввести строчку, например

C++
1
cin >> str;
а только потом будет
C++
1
fiterations(iter);
откуда мы считаем первое "слово", а затем второе.

т.е., пользователь введёт:

iter 123;

и всё работает корректно.

НО если пользователь введёт iter q -- либо циклится этот fiterations(iter); , при этом iter не изменяется, либо (если убрать // с cin.clear и cin.ignore) код один раз пройдёт, зайдёт в условие else, потом выйдет, зайдёт ещё раз, зайдёт в if, выведет "Некорректный ввод данных" и пригласит к продолжению функций программы.

Почему он так делает? почему он сразу не воспринимает, что первая переменная типа char идёт, а не int?

Добавлено через 5 минут
т.е., он даже так делает:

(если ввели iter q)

1) заходит в функцию в else
2) выходит из функции с не изменённым iter_i
3) ещё раз читает строчку, при этом не запрашивает её ввести снова (т.е., запоминает старые значения)
4) заходит по условиям в эту функцию
5) вот теперь он прочитал и понял, что там совсем не то, что нужно
6) вышел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru