Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 12

При вводе данных программа пропускает операции cin

22.03.2016, 19:15. Показов 1664. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать структуру с именем note, содержащую следующие поля:
 фамилия, имя;
 номер телефона;
 дата рождения (массив из трех чисел).
Написать программу, выполняющую следующие действия:
 ввод с клавиатуры данных в массив, состоящий из максимум 8 элементов типа note,
причем сделать возможность прервать ввод, чтобы можно было не вводить все 8
элементов; после окончания ввода отсортировать элементы массива по алфавиту;
 вывод в консоль информации о людях, чьи дни рождения приходятся на месяц, значение
которого введено с клавиатуры;
 если таких нет, вывести соответствующее сообщение;

Вот то, что я написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    struct note
    {
        char name[255];
        char number[255];
        int* DateOfBirth = new int[3];
    };
 
    int p = 0;
    bool da = 1;
    int i = 0;
    note people[8];
    cout << "Введите данные" << endl;
    while (da == 1 && i < 8)
    {
        cout << "Фамилия и имя:" << endl;
        cin.getline(people[i].name, 255);
        cout << "Номер телефона:" << endl;
        cin >> people[i].number;
        cout << "Дата рождения:" << endl;
        cin >> people[i].DateOfBirth[0] >> people[i].DateOfBirth[1] >> people[i].DateOfBirth[2];
        cout << "Хотите продолжиить ввод? 1-да, 0-нет." << endl;
        cin >> da;
        i++;
    }
 
 
    do
    {
        da = false;
        for (p; p < i; p++)
            if (strcmp(people[p].name, people[p + 1].name) > 0)
            {
                swap(people[p].name, people[p + 1].name);
                da = true;
            }
    } while (da);
 
    cout << "Введите месяц рождения: ";
    int month;
    cin >> month;
    for (p = 0; p < i; p++)
        if (people[p].DateOfBirth[1] == month)
            cout << people[p].name <<" " << people[p].number << " "<< people[p].DateOfBirth[0] <<"."<< people[p].DateOfBirth[1] <<"."<< people[p].DateOfBirth[2] << endl;
    system("pause");
    return 0;
}
При вводе данных в структуру программа произвольно пропускает операции cin. Цикл не выполняется. Что не так?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2016, 19:15
Ответы с готовыми решениями:

Копирование строки. При вводе пробела программа пропускает последующий ввод данных
char st, st1; int k, m, i, j; system(&quot;cls&quot;); cout &lt;&lt;&quot;Введите строку&quot;&lt;&lt;endl; cin &gt;&gt;st; cout &lt;&lt;&quot;Введите номер символа,...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get()...

Пробел при вводе данных c применением cin
Допустим имеется следующая запись cin&gt;&gt;n1&gt;&gt;n2&gt;&gt;n3; Спрашивается как оператор разграничивает вводимые данные? Согласитесь, ввести 12,...

2
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
22.03.2016, 19:21
Ошибка избитая
Распространенные ошибки

Добавлено через 1 минуту
Цитата Сообщение от wohorogov Посмотреть сообщение
cin >> da;
\n еще не удален из потока.
После этого
Цитата Сообщение от wohorogov Посмотреть сообщение
cin.getline(people[i].name, 255);
Читает пустую строку.
1
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 12
22.03.2016, 19:40  [ТС]
Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2016, 19:40
Помогаю со студенческими работами здесь

Программа пропускает cin
Уже несколько раз сталкивался с проблемами функции &quot;cin&quot; по задумке, в моей программе, он должен ожидать ввода цифры, а после выполнять...

Поведение cin при вводе некорректного типа данных
Был создан цикл: while (err) //bool err = true { try { cin &gt;&gt; arrsz // int arrsz if (!isdigit(arrsz)) ...

Некорректная работа cin.fail() при вводе смешанных данных
Дарова, у меня есть код, где присутствует проверка на ввод неправильных данных(в моем случае всяких букв), но работает она не так, как мне...

Программа пропускает вызов cin.getline() во время выполнения
помогите исправить прогу, не работает cin.getline, просто пропускает ее(( void main() { setlocale(LC_ALL,&quot;russian&quot;); ...

Отбрасывание "мусорных" данных при вводе числа через cin
Имеется задача, когда необходимо ввести с клавиатуры число и обработать его. Если делать классический ввод int i=0; cout &lt;&lt;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru