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

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

Войти
Регистрация
Восстановить пароль
 
Shalygin
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 23
#1

Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout - C++

04.09.2015, 11:01. Просмотров 424. Ответов 11
Метки нет (Все метки)

Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout.
Это фрагмент со структурами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int n;
void input(){
    cout << "enter the total number of videos: ";
    cin >> n;
    cout << "\nEnter the information about the film:\n\n";
    for (int i = 0; i < n; ++i){
        cout << "movie title - ";
        cin.getline(film[i].movie,30);
        cout << "producer - ";
        cin.getline(film[i].producer,30);
        cout << "genre - ";
        cin.getline(film[i].genre,20);
        cout << "rating popularity - ";
        cin >> film[i].rating;
        cout << "the price of the disc - ";
        cin >> film[i].price;
        cout << endl;
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2015, 11:01     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Посмотрите здесь:

Вывод команды cout после ввода значений, несоответствующих требованиям - C++
Как сделать, что бы команда cout не работала в случае ввода данных, не подходящих по требованию условия задачи? #include &lt;iostream&gt; ...

#c++ Написал программу, qt выдает ошибки напротив cout по всей программе. Подскажите почему - C++
#include &lt;QCoreApplication&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; using...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout - C++
Расчитать значения переменных y и z по заданным формулам . Для ввода/вывод использовать объекты cin и cout. Определить разность между...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout - C++
Расчитать значения переменных y и z по заданным формулам (табл. 1). Для ввода/вывода использовать объекты cin и cout. Определить...

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

cout Выводит не те символы - C++
Доброго времени суток. Есть такой код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #include...

Cout не выводит строку. - C++
Здравствуйте! Есть класс #include &quot;string.h&quot; class myClass { public: string GetText()const{return itsText;} void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ture
437 / 330 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
04.09.2015, 11:13     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #2
C++
1
2
for(int i = 0; i < n; ++i) {
            std::cin.ignore(256, '\n');
Shalygin
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 23
04.09.2015, 11:16  [ТС]     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #3
а можно без сарказма направить в нужное русло? буду признателен.
ture
437 / 330 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
04.09.2015, 11:22     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #4
cin.getline забирает перевод строки, а cin >> нет.
cin.getline кончает с переводом строки, а cin >> ... дальше.
Ilot
Модератор
Эксперт С++
1788 / 1163 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.09.2015, 11:22     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #5
C++
1
2
3
cout << "movie title - ";
cout.flush();    
cin.getline(film[i].movie,30);
и т.д. Хотя кажется потоки все же синхронизируются. Однако ж попробуйте.
ture
437 / 330 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
04.09.2015, 11:29     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #6
Shalygin, cout.flush(); это сбросить из буфера в экран или файл, т.е. не ждать его переполнения.
Shalygin
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 23
04.09.2015, 11:30  [ТС]     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #7
будете улыбаться, но cout.flush() не помогает.
ture
437 / 330 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
04.09.2015, 11:33     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #8
Shalygin, я тоже так думаю.
после cin >> n; и cin >> film[i].price; остается символ '\n', который хватает cin.getline и дальше не читает.

Добавлено через 40 секунд
там и пробелы перед '\n' могут остаться
Ilot
Модератор
Эксперт С++
1788 / 1163 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.09.2015, 11:41     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #9
Shalygin, покажите ваш ввод и результат работы ибо проверил у себя - все выводиться в полном порядке.
KPD100
1 / 1 / 2
Регистрация: 02.09.2015
Сообщений: 13
04.09.2015, 11:48     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int n;
void input(){
    cout << "enter the total number of videos: ";
    cin >> n;
    cout << "\nEnter the information about the film:\n";
    for (int i = 0; i < n; ++i){
        cin.ignore();
        cout << "movie title - ";
        cin.getline(film[i].movie,30);
        cout << "producer - ";
        cin.getline(film[i].producer,30);
        cout << "genre - ";
        cin.getline(film[i].genre,20);
        cout << "rating popularity - ";
        cin >> film[i].rating;
        cout << "the price of the disc - ";
        cin >> film[i].price;
        cout << endl;
    }
}
Shalygin
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 23
04.09.2015, 11:51  [ТС]     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #11
спасибо всем. заработала
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2015, 12:26     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Еще ссылки по теме:

Программа останавливается после ввода имени файла - C++
В файле данные типа 1 2 45 1 3 60 1 4 60 и их надо считать в map и вывести, проблема, что после ввода имени файла стоит на месте и...

Cout не выводит информацию на экран - C++
Всем доброго дня !!! Столкнулся с одной непонятной мне проблемой. На экран cout не выводит сообщение , зато printf работает как...

Не выводит последний COUT(20 12 2016) - C++
#include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include...

Cout выводит значения в обратной последовательности - C++
Подскажите почему код : #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int sqore=0; int func () { int a=sqore;...

Выводит на экран сразу два cout - C++
На экран выводит сразу две строки. Как решить эту проблему? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using...


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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
Эксперт CЭксперт С++
3977 / 1724 / 193
Регистрация: 20.02.2013
Сообщений: 4,824
Записей в блоге: 21
04.09.2015, 12:26     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #12
Shalygin, каждый раз перед getline() вставляй
C++
1
while (cin.get() != '\n') {}
Тема уже сто раз подымалась на форуме (вот, к примеру). И потом, для кого прикреплённые темы сделали?
Yandex
Объявления
04.09.2015, 12:26     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Ответ Создать тему
Опции темы

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