Пишу на С++. И тут появляется задание(тренировка СПБГУ#22 ) G,а в нём нужно вводить (я использую cin) неизвестное количество чисел,вот я и не знаю как отследить,что ввод был закончен.С файлом всё просто,а тут... Помогите
Пишу на С++. И тут появляется задание(тренировка СПБГУ#22 ) G,а в нём нужно вводить (я использую cin) неизвестное количество чисел,вот я и не знаю как отследить,что ввод был закончен.С файлом всё просто,а тут... Помогите
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | jiangly | 3810 |
| 2 | Benq | 3676 |
| 3 | Kevin114514 | 3655 |
| 4 | maroonrk | 3463 |
| 5 | strapple | 3390 |
| 6 | Um_nik | 3387 |
| 7 | tourist | 3384 |
| 8 | heuristica | 3322 |
| 9 | turmax | 3319 |
| 10 | jiangbowen | 3291 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | Um_nik | 143 |
| 4 | AmShZ | 143 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | maroonrk | 134 |
| 9 | BledDest | 132 |
| 10 | qwexd | 129 |
| Название |
|---|



UPD. Some info
как проверить что ввод закончен?
С файлом всё просто,а тут...Можешь это место по-подробнее объяснить?
как я понял, топикстартеру с файлами проще потому что там EOF есть
BackendDeveloper имеет в виду, что тут EOF есть в точно таком же виде, как и в файлах.
В консоли это невозможно.
UPD: слишком поздно написал
UPD2: в консоли — имеется ввиду без файлов в codeblocks(или тому подобное) нажав на клавишу F9.
UPD3: Извините за неправильный ответ. Раньше мне всегда твердили что это невозможно. Слова беру назад и большое спасибо Avitella и andreyv. Узнал что-то новое)
В linux консоли есть комбинация клавиш CTRL + D. Так что все возможно :)
Ещё как возможно:
спасибо, долго искал
Если нужен построчный ввод неизвестного количества данных поможет такое:
да
еще же scanf-ом можно
int x; while (scanf("%d", &x) == 1){ //do smth }
Можно использовать итераторы:
В олимпиадах я такого не видел)
Моя не понимать. Вы тут объявили
eos, но не инициализировали. Я правильно понимаю, что у него в стандартном конструкторе будет какая-то шняга, которая аналогична "бла-бла-бла" и позволяет понять, когда у нас конец ввода? Но тогда вопрос, в качестве так сказать инициализатораitмы передалиcin, а почему без инициализатора будет то, что нам нужно? Объясните, пожалуйста, подробнее, а то лень копаться в референсах/исходниках и чекать у себя на компе, будет ли работать ваш пример.UPD. Скомипилилось и отработало. Объясните, почему.
Вы понимаете правильно. Работает так потому что его так написали.
Цитата отсюда
A special value for this iterator exists: the end-of-stream; When an iterator is set to this value ... has been constructed using its default constructor (without associating it with any basic_istream object).