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

Проблема ввода данных с пробелом

02.03.2021, 08:40. Показов 1167. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форумчане, есть код для сдачи контрольной, но он работает не полноценно, при вводе данных в "cout << "Фамилия и инициалы: "; cin >> K[i].surname;" данных к примеру "Данилов Антон Игоревич" или "Данилов А.И." то ввод следующих данных проскакивает, в интернете это связывают с тем что С++ считает пробелом конец строки, но использовал и "cin.getline(K[i].surname,30)" "c _flushall();" но тогда при следующем цикле ввода данных, ввод фамилии и имени проскакивает.

Прошу Вас форумчане помогите доделать этот код, что бы ввод данных не проскакивал.

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <windows.h>
#include <iostream>
 
using namespace std;
 
struct Worker { // начало объявления структурного типа Worker
 
    char surname[30]; //объявление поля «фамилия работника»
 
    char position[15]; //объявление поля «название занимаемой должности»
 
    unsigned short int year; //объявление поля «год поступления на работу»
 
}; //конец объявление структуры Worker
int main()
{
    system("chcp 1251");
    int n = 3; // объявление константы n — числа элементов типа «Worker»
 
    bool people = false;
 
    unsigned short int now_year = 2020, seniority; // объявление переменных now_year — текущий год и seniority — стаж
 
    Worker* K = new Worker[n];
 
    Worker temp;
 
    for (int i = 0; i < n; i++)
 
    {
        cout << "Фамилия и инициалы: ";
 
        cin >> K[i].surname;
 
        cout << "\nНазвание занимаемой должности: ";
 
        cin >> K[i].position;
 
        cout << "\nГод поступления на работу: ";
 
        cin >> K[i].year;
 
        cout << "\n";
    }
 
    cout << "Введите стаж работы(лет): ";
 
    cin >> seniority;
 
    for (int i = 0; i < n; i++)
 
    {
        if ((now_year - K[i].year) > seniority)
 
        {
            cout << '\n' << K[i].surname;
 
            people = true;
        }
    }
 
    if (people == false) cout << "Нет таких работников!" << endl;
 
    cout << "\nСписок работников в алфавитном порядке" << endl;
 
    for (int i = 0; i < n - 1; i++)
 
    {
        for (int j = 0; j < n; j++)
 
            if (strcmp(K[i].surname, K[j].surname) > 0)
 
            {
                temp = K[i];
 
                K[i] = K[j];
 
                K[j] = temp;
            }
    }
 
    for (int i = 0; i < n; i++)
 
        cout << '\n' << K[i].surname << endl;
 
    system("pause");
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2021, 08:40
Ответы с готовыми решениями:

Проблема ввода в консоль данных
Есть программа для ввода параметров начальных условий, все просто в ней, но почему я могу ввести всего 3 параметра а все остальное...

регулярное выражение, проблема с неразрвыным пробелом
помогите, плиз! дана фраза, где несколько слов соединяется неразрывными пробелами почему-то вот это выражение никак неразрывный...

Вводится текст ,конец ввода F1 .Найти количество букв слов,слова разделяются пробелом
Нужа помощь в написании программы с блок схемой. Текст программы: Вводится текст , конец ввода &quot; F1&quot; . Найти количество букв...

2
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
02.03.2021, 09:50
Цитата Сообщение от mislerwc Посмотреть сообщение
Добрый день форумчане, есть код для сдачи контрольной, но он работает не полноценно, при вводе данных в "cout << "Фамилия и инициалы: "; cin >> K[i].surname;" данных к примеру "Данилов Антон Игоревич" или "Данилов А.И." то ввод следующих данных проскакивает, в интернете это связывают с тем что С++ считает пробелом конец строки, но использовал и "cin.getline(K[i].surname,30)" "c _flushall();" но тогда при следующем цикле ввода данных, ввод фамилии и имени проскакивает.
Немного исправил ваш код у меня, попробуйте:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <windows.h>
#include <iostream>
#include <string>
 
using namespace std;
 
struct Worker { // начало объявления структурного типа Worker
 
    string surname; //объявление поля «фамилия работника»
 
    string position; //объявление поля «название занимаемой должности»
 
    unsigned short int year; //объявление поля «год поступления на работу»
 
}; //конец объявление структуры Worker
int main()
{
    system("chcp 1251");
    int n = 3; // объявление константы n — числа элементов типа «Worker»
    bool people = false;
    unsigned short int now_year = 2020, seniority; // объявление переменных now_year — текущий год и seniority — стаж
    Worker* K = new Worker[n];
    Worker temp;
    for (int i = 0; i < n; i++)
    {
        cout << "Фамилия и инициалы: ";
        getline(cin, K[i].surname);
        cout << "\nНазвание занимаемой должности: ";
        getline(cin, K[i].position);
        cout << "\nГод поступления на работу: ";
        cin >> K[i].year;
        cout << "\n";
        cin.ignore();
    }
 
    cout << "Введите стаж работы(лет): ";
    cin >> seniority;
 
    for (int i = 0; i < n; i++)
    {
        if ((now_year - K[i].year) > seniority)
        {
            cout << '\n' << K[i].surname;
            people = true;
        }
    }
 
    if (people == false) cout << "Нет таких работников!" << endl;
    cout << "\nСписок работников в алфавитном порядке" << endl;
 
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n; j++)
            if (K[i].surname > K[j].surname)
            {
                temp = K[i];
                K[i] = K[j];
                K[j] = temp;
            }
    }
 
    for (int i = 0; i < n; i++)
        cout << '\n' << K[i].surname << endl;
 
    system("pause");
    return 0;
}
Добавлено через 3 минуты
Или вы сможете использовать gets_s() вместо cin для ввода строки с пробелом для типа char[] !
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.03.2021, 09:52
Цитата Сообщение от mislerwc Посмотреть сообщение
но тогда при следующем цикле ввода данных, ввод фамилии и имени проскакивает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < n; i++)
{
    cout << "Фамилия и инициалы: ";
    std::cin.getline(K[i].surname, sizeof(K[i].surname));
 
    cout << "\nНазвание занимаемой должности: ";
    cin >> K[i].position;
    cout << "\nГод поступления на работу: ";
    cin >> K[i].year;
    cout << std::endl;
 
    std::cin.ignore();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2021, 09:52
Помогаю со студенческими работами здесь

Обеспечить ограничение на возможность ввода символьной информации цифрами, пробелом, знаком табуляции, знак
1. Обеспечить ограничение на возможность ввода символьной информации цифрами, пробелом, знаком табуляции, знаками препинания, русским...

CodeDOM компилятор и чтение иконки проблема с пробелом в значке
У меня есть путь к файлу иконки: C:\Icons\55 (12).ico string pathToIco = &quot;C:\Icons\55 (12).ico&quot;; parameters.CompilerOptions += $&quot;...

Вводится текст. Конец ввода точка. Найти количество букв слов, слова разделяются пробелом
Вводится текст. Конец ввода точка. Найти количество букв слов, слова разделяются пробелом.

Обеспечить ограничение на возможность ввода символьной информации пробелом, знаком табуляции, знаками препинания и кир
Обеспечить ограничение на возможность ввода символьной информации пробелом, знаком табуляции, знаками препинания и кириллицей....

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом)
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru