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

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

22.03.2016, 19:15. Показов 1629. Ответов 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
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
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
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru