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

Проверка вводимых данных

01.06.2018, 15:16. Показов 1248. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать так, чтобы при вводе символов в строку года поступления на экран появлялось соответствующее сообщение и происходил повторный ввод данных. Подскажите
Кликните здесь для просмотра всего текста
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include <iostream>
#include <clocale>
#include <iomanip>
#include <cstdio>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define VALUES 20000
#ifndef NULL
#define NULL  0
#endif
using namespace std;
typedef const char*  cchar;
 
 
struct Workers // объявление структуры с данными
{
    char name[40];  // имя работника
    char surname[40];//фамлия
    char Oname[40];//отчество
    char position[20];//должность
    short year;//год поступления
    int ID;/*персональный индентификатор*/
    Workers *next;
};
 
 
 
 typedef enum enum_sort{
    sort_family = 0, sort_date = 1
 };
long  timestamp(struct Workers* obj) {
        return obj->year;}
 
// прототипы функций
int Menu();
void All_workers(Workers *first);
void add_first(Workers **first);
void add_center(Workers **first);
void add_last(Workers **first);
void  stag_workers(Workers *first);
void del_workers(Workers **first);
void clear_All(Workers **first);
void sort(Workers* ffp,Workers* first);
// прототипы функций
void  sort_list(struct Workers*  pfirst, enum enum_sort type)
{
 struct Workers*  first;
        struct Workers*  last;
        int    id, tmp;
        char   surname[12];
        char   name[9];
         char Oname[40];//отчество
        char position[20];//должность
        int ID;
while(1) {
               id = 0;
               first = pfirst;
               last  = pfirst->next;
               for( ; last != NULL ; last = last->next, first = first->next) {
 
                   if( (tolower(first->surname[0]) > tolower(last->surname[0]) && type == sort_family) ||
                        (timestamp(first) > timestamp(last) && type == sort_date)  ) {
 
                          strcpy(surname, first->surname);
                          strcpy(first->surname, last->surname);
                          strcpy(last->surname, surname);
 
                          strcpy(name, first->name);
                          strcpy(first->name, last->name);
                          strcpy(last->name, name);
 
                          strcpy(Oname, first->Oname);
                          strcpy(first->Oname, last->Oname);
                          strcpy(last->Oname, Oname);
 
                          strcpy(position, first->position);
                          strcpy(first->position, last->position);
                          strcpy(last->position, position);
 
                          tmp               = first->year;
                          first->year= last->year;
                          last->year = tmp;
 
                          tmp               = first->ID;
                          first->ID= last->ID;
                          last->ID = tmp;
 
 
 
 
 id |= 1;}}
if(! id)
                   break;
 
        };
 
}
int main()
{
setlocale(LC_CTYPE,"rus");
SetConsoleCP (1251);
SetConsoleOutputCP(1251);
Workers *first=NULL;
Workers *ffp=NULL;
//first->next=NULL;
    system ("cls");
    int k;
    while ((k = Menu()) != 0)
    {
        switch (k)
        {system("cls");
        case 1:
            system("cls"); All_workers(first); break;
        case 2:
            system("cls");  add_first(&first); break;
        case 3:
            system("cls");  add_center(&first); break;
        case 4:
            system("cls");  add_last(&first); break;
        case 5: del_workers(&first); break;
        case 6: stag_workers(first); break;
        case 7: clear_All(&first);break;
        case 8: sort(ffp,first);
 
        case 9: break;
        default: cout << "Введите число от 1 до 7!!!\n";system("pause");system("cls");
        }
    }
    getchar(); // пауза
    return 0;
}
int Menu()
{system("cls");
 
    cout<<"                  MENU\n";
    cout<<"1 - Просмотреть информацию о работнике\n";
    cout<<"2 - Добавить работника в начало списка\n";
    cout<<"3 - Добавить работника в середину списка\n";
    cout<<"4 - Добавить работника в конец списка\n";
    cout<<"5 - Удалить работника\n";
    cout<<"6 - Вывести работника(ов) чей стаж больше введенного значения\n";
    cout<<"7 - очистить весь список\n";
    cout<<"8 - сортировка\n";
    cout<<"0 - Выход\n";
    cout<<endl;
    cout<<"Введите нужный пункт: ";
    int k;
    cin>>k;
    system("cls");
    cout<<endl;
    return k;
}
void All_workers(Workers *first) /*Вывод всего списка работников*/
{//system("cls");
    cout << "                           Данные о работниках фирмы\n";
    cout << setiosflags( ios::left );
    cout.width(10);
    cout <<"ИМЯ"<<setw(14)<< "ФАМИЛИЯ"
    <<setw(16)<< "ОТЧЕСТВО"<<setw(14)<< "ДОЛЖНОСТЬ"
    <<setw(20)<<"ГОД ПОСТУПЛЕНИЯ"<<"ID РАБОТНИКА\n" ;
    Workers *pv = first;
    while (pv)
    {
    cout<< setw(10) <<pv->name<<setw(14)<< pv->surname
    <<setw(16)<< pv->Oname;
    cout<<setw(14)<< pv->position<<setw(20)<<pv->year<<pv->ID;
    cout << "\n";
    pv=pv->next;
    } cout<<endl; system("pause");
}
void  add_first(Workers **first) /*Добавление работника в список(в начало)*/
{
 
 
 
    Workers *pv=new Workers;
    {cout << "\nИнформация о работниках \n";
    cout<<"Введите Имя: > ";
    cin>>pv->name;
    cout << "Введите Фамилию: > ";
    cin >> pv->surname;
    cout << "Введите Отчество: > ";
    cin >> pv->Oname;
    cout << "Введите Должность: > ";
    cin >> pv->position;
    cout << "Введите Год поступления: > ";
    cin >> pv->year;
    if (!cin)
    {
        cout<<"Repeat!";
         cout << "Введите Год поступления: > ";
    cin >> pv->year;
    }
    cout << "Введите ID работника > ";
    cin >> pv->ID;
 
    cout << "\n";
    pv->next=NULL;}
    Workers *p = *first;
    if(p->name!=pv->name)
    {
        pv->next=p;
        *first=pv;
    }
    system("pause");system("cls");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2018, 15:16
Ответы с готовыми решениями:

Проверка вводимых данных
Доброго времени суток, форумчане. Я столкнулся с такой проблемой: при введении еденицы измерения, если та инициализирована ранее то все...

Проверка вводимых данных
Подскажите, пожалуйста, как зациклить ввод данных до тех пор пока пользователь не введёт корректный ответ #include &lt;iostream&gt; ...

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

2
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
01.06.2018, 15:23
Если в cin вводятся данные, которые не подходят по типу, cin обретает флаг ошибки. Проверяй его - если есть, то очищаешь поток, выкидываешь сообщение о "введите корректные данные" и заново просишь ввод.
1
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
01.06.2018, 16:50
Ну или самый банальный ваpиант(не подходит для больших пpоектов) , делаешь массив из символов котоpые запpещены , и в цикле пpовеpяешь каждый символ вводимый пользователем с каждым элементов из этого массива. Ваpиант оч сыpой, но pаньше я его использовал)
Бывало я делал массив из алфавитов)
Или используй pегуляpные стpоки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2018, 16:50
Помогаю со студенческими работами здесь

Проверка вводимых данных
Вот часть программы int main(void) { int vop; setlocale(LC_ALL, &quot;Russian&quot;); int mas1, mas2, mas3, outmas; int ke1, ke2,...

Проверка вводимых данных
#include &lt;iostream&gt; using namespace std; int main() { double a, b, c; cout &lt;&lt; &quot;Enter the first side of the...

Проверка корректности вводимых данных
Здравствуйте, подскажите,пожалуйста, как прописать условия проверки. Мне нужно: если вводится радиус e больше одной из сторон, выводилось...

Проверка на корректность вводимых данных
В моём коде должны быть ТОЛЬКО вводимые числа от -1000 до 1000 (с плавающей точкой). Если пользователь вводит СИМВОЛ или числа ВНЕ моего...

Проверка типа вводимых данных.
Собственно,как осуществить ? К примеру,здесь: int main() { int x; int y; cin &gt;&gt; x;


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru