Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
#1

Код ждёт ввода следующей строчки - цикл повторяется бесконечно. - C++

22.08.2011, 10:42. Просмотров 1196. Ответов 10
Метки нет (Все метки)

В учебнике написано, что вот этот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string word;
    
    while (cin >> word)
        cout << "прочитано слово: " << word << "\n";
    
    cout << "все слова прочитаны";
}
считает введённую строчку, возвратит слова,а когда слова в ней закончатся, while будет false и перейдёт к следующей cout. Вместо этого код ждёт ввода следующей строчки - цикл повторяется бесконечно. Как же его завершить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 10:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Код ждёт ввода следующей строчки - цикл повторяется бесконечно. (C++):

Цикл бесконечно повторяется - C++
попытался решить вот эту задачку http://acm.timus.ru/problem.aspx?space=1&amp;num=1404 но, почему-то, второй цикл бесконечно повторяется......

Не повторяется цикл - C++
После завершения любого пункта программа закрывается( Не получается сделать так, чтобы после завершения любого пункта, выводилось снова...

Цикл не повторяется - C++
Задача: Пройти шахматным конем максимальное количество клеток доски. Ставлю несколько попыток, но выполняется только одна. Начиная со...

Почему цикл выполняется бесконечно? - C++
Объясните кто-нибудь, почему этот код #include &lt;iostream&gt; #include &lt;cstdlib&gt; int main() { int array1; ...

Напишите программу на C++, использующую цикл и управляющую последовательность табуляции \t для печати следующей таблицы значений: - C++
Напишите программу на C++, использующую цикл и управляющую последовательность табуляции \t для печати следующей таблицы значений: N 10*N ...

При вводе вместо цифр символов программа перестаёт ожидать ввода на следующей итерации цикла. Почему? - C++
Почему это происходит? #include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); void...

10
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 10:49 #2
Windows - Ctrl+Z Linux - Ctrl+D
2
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:51 #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
Windows - Ctrl+Z Linux - Ctrl+D
Естественно нужна имитация конца потока
0
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 10:54  [ТС] #4
Спасибо.
* * *
Вот оно что, Михалыч...
0
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:19 #5
Ну это не решает проблемы целиком. Пользователя то не заставишь вводить ctrl+z
0
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 11:27  [ТС] #6
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
Цитата Сообщение от Olga
if-else вас не спасет, все равно ctrl+z вводить придется
Olga, спасибо. Я пока не буду забегать так далеко впереди паровоза
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:28 #7
Цитата Сообщение от Voroshek Посмотреть сообщение
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
if-else вас не спасет, все равно ctrl+z вводить придется
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.08.2011, 11:33 #8
Цитата Сообщение от Olga_ Посмотреть сообщение
if-else вас не спасет, все равно ctrl+z вводить придется
Ну почему, можно и без него
C++
1
2
3
4
5
6
7
#include <iostream>
int main(){
    std::string str;
    while (std::cin >> str)
        if (str == "exit")
            std::cin.setstate(std::ios::eofbit);
}
Хотя правильнее будет просто break поставить.
2
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:37 #9
Цитата Сообщение от diagon Посмотреть сообщение
Ну почему, можно и без него...
Ну если так, то да, спасибо, Diagon
0
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:40 #10
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 12:09 #11
Цитата Сообщение от Belphanior Посмотреть сообщение
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
Тогда потом слова отдельно надо выделять, а тут они выделяются за счет того, то ' ', '\t' и '\n' разделителями считаются
0
22.08.2011, 12:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 12:09
Привет! Вот еще темы с ответами:

Как правильно засунуть две строчки в код программы?( - C++
Вставить надо это: int ok; do { /********************************* *** Часть программы, *** которую нужно...

Видео в начале Thief 3 бесконечно повторяется - Action/FPS игры
Установил я эту игру, запускаю, начинается видео (ещё до главного меню). Пропустить его нельзя. Как только оно заканчивается, начинается...

Метод половинного деления - ответ бесконечно повторяется - Free Pascal
Program lab1; const e=0.001; var A, B, C:real; i:integer; function f(t: real): real; begin f:=t*t*t-2*t*t+cos(t); end; ...

Таймер на запуск следующей строчки - Pure Basic
If FileSize(&quot;D:\File\File.txt&quot;)=-1 RunProgram(&quot;D:\Games\EMail Example\Debug\EMail Example.exe&quot;) Else End EndIf После первой...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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