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

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

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

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

22.08.2011, 10:42. Просмотров 1141. Ответов 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. Вместо этого код ждёт ввода следующей строчки - цикл повторяется бесконечно. Как же его завершить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 10:42     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Посмотрите здесь:

Цикл бесконечно повторяется - 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...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 10:49     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #2
Windows - Ctrl+Z Linux - Ctrl+D
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:51     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
Windows - Ctrl+Z Linux - Ctrl+D
Естественно нужна имитация конца потока
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 10:54  [ТС]     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #4
Спасибо.
* * *
Вот оно что, Михалыч...
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:19     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #5
Ну это не решает проблемы целиком. Пользователя то не заставишь вводить ctrl+z
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 11:27  [ТС]     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #6
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
Цитата Сообщение от Olga
if-else вас не спасет, все равно ctrl+z вводить придется
Olga, спасибо. Я пока не буду забегать так далеко впереди паровоза
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:28     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #7
Цитата Сообщение от Voroshek Посмотреть сообщение
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
if-else вас не спасет, все равно ctrl+z вводить придется
diagon
Higher
1927 / 1193 / 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 поставить.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:37     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #9
Цитата Сообщение от diagon Посмотреть сообщение
Ну почему, можно и без него...
Ну если так, то да, спасибо, Diagon
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:40     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #10
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Еще ссылки по теме:

Нарисуйте форму и напишите программный код решения следующей задачи - C++
нарисуйте форму и напишите программный код решения следующей задачи: w=z^3-2.1z^2+1.8z\\ z=\begin{cases} x+y &amp; \text{ , } x \lt 0...

Не большой код, нужно написать коментарии хотябы на главные строчки! - C++
string fixErrors(string encfile) { int doh = 0; int sindromeOneOriginal; int sindromeTwoOriginal; int...

Цикл с ожиданием ввода - C++
Подскажите постоянный цикл, при этом что б определялся ввод данных с клавиатуры, нужно нарисовать символами анимированный обьект

Цикл ввода с условием - C++
Добрый вечер. У меня есть вопрос касательно кода. Как его зациклить? Я имею ввиду, чтобы на шаге &quot;Oshibka&quot; возвращало снова к вводу. Также...

Матрицы. Бесконечный цикл. Проверка ввода - C++
В конструкторе класса матриц пользователю предлагается выбрать ввода с клавиатуры или автоматически. При выборе ручного ввода возникает...


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

Или воспользуйтесь поиском по форуму:
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #11
Цитата Сообщение от Belphanior Посмотреть сообщение
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
Тогда потом слова отдельно надо выделять, а тут они выделяются за счет того, то ' ', '\t' и '\n' разделителями считаются
Yandex
Объявления
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Ответ Создать тему
Опции темы

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