0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
||||||
1 | ||||||
цикл while(cin)07.01.2012, 17:09. Показов 25710. Ответов 18
Метки нет (Все метки)
когда цикл заканчивается, то cin >> j; не работает. почему?
0
|
07.01.2012, 17:09 | |
Ответы с готовыми решениями:
18
Как работает cin.peek, cin,get, cin.ignore, cin.clear? Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() Цикл и cin |
Заблокирован
|
||||||
07.01.2012, 17:39 | 2 | |||||
ITTI, как вы хотетите чтобы программа поняла что вы ввод окнчили(она должна мысли прочесть?). Я думаю нужно заранее сообщить требуемое число элементов в векторе и осуществлять ввод, вот что вышло
0
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
|
09.01.2012, 12:01 [ТС] | 3 |
спасибо.
допустим, пользователь не знает сколько чисел он хочет ввести. а для прекращения ввода нажимает ">" "<". и "допустим" обязательное условие.
0
|
Заблокирован
|
|
09.01.2012, 12:05 | 4 |
- тогда нужно сразу это оговаривать, введите getchar и "закрывайте ввод" когда встретите этот символ или делайте ввод строк проверяйте strcmp на соответсвие или не соответсвие ">" "<" и если strcmp не выдаёт ноль то atoi преобразуйте строку в число и закидывайте в ваш вектор. Ещё одним вариантом может быть вопрос от программы на прекращение ввода после каждого введенного числа
0
|
Заблокирован
|
||||||
09.01.2012, 12:11 | 5 | |||||
Вот реализация через строку
0
|
09.01.2012, 12:12 | 6 | |||||
-=ЮрА=-, полагаю, имелось в виду что-то вроде этого
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
09.01.2012, 13:51 | 7 |
При проверке условия while(cin>>c) вызывается функция std::cin.operator void *(), вызов которой эквивалентен вызову !std::cin.fail().
Функция std::cin.fail() возвращает true при обнаружении ошибки, т.е. при установке в потоке флагов failbit или badbit. При установке флага failbit последующие операции с потоком данных игнорируются, пока этот флаг не будет сброшен программой, т.е. в нашем случае нужно вызвать std::cin.clear().
1
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
||||||
09.01.2012, 14:37 [ТС] | 8 | |||||
выбрала этот вариант. один вопрос: как прервать выполнение программы?
Добавлено через 4 минуты я и не видела. у меня как-то так:
0
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
|
09.01.2012, 14:52 [ТС] | 10 |
0
|
Заблокирован
|
||||||
09.01.2012, 14:56 | 11 | |||||
soon, полагаю что ввиду имелось следующее
0
|
09.01.2012, 15:02 | 13 |
-=ЮрА=-, А я разве не это показал? Ввел массив, вывел(дабы показать, что все корректно вводимое там сохранилось) очистил поток, убрал \n, ввел число и вывел его(опять-же, чтобы показать, что поток вновь можно использовать). Имхо, ТС именно это и просил.
0
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
|
09.01.2012, 15:19 [ТС] | 14 |
да, пост 11 то самое. плохо убила. я не имела ввиду конкретный случай. к примеру, операторы, следующие за throw, никогда не выполнятся, как там прерывается программа?
0
|
Заблокирован
|
|
09.01.2012, 15:50 | 15 |
- недопускаем добавление в вектор некорректной величины
- чистим поток (сбрасываем флаг ошибки потока ввода) - пропускаем введенное ранее значение, которое осталось в буфере от ввода cin>>c; PS: перефразируйте вопрос м.б. вы не то хотели узнать Добавлено через 1 минуту Не по теме: PSPS:Ещё пару "выстрелов" и я просто "выпаду" из топика...
0
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
|
09.01.2012, 16:10 [ТС] | 16 |
спасибо за объяснения, я поняла, что было в программе, иначе спросила бы.
использую "std_lib_facilities.h"(стауструп "посоветовал"), там определена функция void error(string s) или как-то так, после ее выполнения программа прекращается. вот в своей программе используешь "cerr" - сообщение появляется, но еще выполняется после цикла вот та часть, что уже не нужна. вот я и спрашиваю что засунуть после cerr, чтобы все "закрылось". Не по теме: выпал?
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
09.01.2012, 16:43 | 17 | |||||
Вообще без циклов
0
|
Заблокирован
|
||||||
09.01.2012, 18:12 | 18 | |||||
Если я вас правильно понял то
0
|
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 25
|
|
10.01.2012, 17:43 [ТС] | 19 |
0
|
10.01.2012, 17:43 | |
10.01.2012, 17:43 | |
Помогаю со студенческими работами здесь
19
C++ Цикл не останавливается на cin >> n; Ошибка ( cin.get и цикл ) цикл после cin Ввод данных используя цикл while (cin >> ) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |