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

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

Восстановить пароль Регистрация
 
Shalygin
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 23
04.09.2015, 11:01     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #1
Подскажите почему после первого 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
Посмотрите здесь:

C++ Cout не выводит строку.
C++ cout Выводит не те символы
cout.setf и cout.precision C++
Вместо значений массива в cout выводит адреса C++
Выводит на экран сразу два cout C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
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
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
04.09.2015, 11:22     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #4
cin.getline забирает перевод строки, а cin >> нет.
cin.getline кончает с переводом строки, а cin >> ... дальше.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 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
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
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
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
04.09.2015, 11:33     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #8
Shalygin, я тоже так думаю.
после cin >> n; и cin >> film[i].price; остается символ '\n', который хватает cin.getline и дальше не читает.

Добавлено через 40 секунд
там и пробелы перед '\n' могут остаться
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
04.09.2015, 11:41     Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout #9
Shalygin, покажите ваш ввод и результат работы ибо проверил у себя - все выводиться в полном порядке.
KPD100
 Аватар для 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
Еще ссылки по теме:

Cout не выводит числа C++
C++ Cout не выводит информацию на экран
C++ Cout <<endl; Что это значит? Если ничего нету в cout?

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

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

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru