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

Неправильный ввод информации

13.03.2015, 15:08. Показов 721. Ответов 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
#include <iostream>
#include <conio.h>
#include <string>
#include <iomanip>
#include <algorithm>
using namespace std;
//#define N 3
 
struct note
{
    char name[100];
     char lastname[100];
    char phone[50];
    int date[3];
} info[8];   //структура
 
 
 
int main(void)
{
    const int N=2;
    setlocale (LC_ALL,"Russian");
int i, j;
char phone[50];
note Note[N];
//Ввод данных
for( i=0; i<N; ++i )
{
    cout << "\n\t---- " << i+1 << " ---\nИмя :";
    
    cin >> info[ i ].name; 
    cout << "фамилия: ";
    cin >> info[ i ].lastname; 
 
    cout << "Номер телефона :";
    cin >> info[ i ].phone, 50 ;
    cout << "Дата :\nЧисло >> ";
    cin >> info[ i ].date[ 0 ];
    if (info[i].date[0] > 30)
    {
        cout << "vvedite ot 1 do 30" << endl;
        cout << setw(15) << "Дата: \t";
        cin >> info[i].date[0];
    }
    cout << "Месяц >> ";
    cin >> info[ i ].date[ 1 ];
    if (info[i].date[1] > 12)
    {
        cout << "vvedite ot 1 do 12" << endl;
        cout << setw(15) << "Mесяц: \t";
        cin >> info[i].date[1];
    }
    cout << "Год >> ";
    cin >> info[ i ].date[2];
    bool ok = false;
do 
{
    cin >> info[i].date[2];
    if ((info[i].date[2]<1950) || (info[i].date[2]>2000))
        cout << "vvedite korektnyi god" << endl;
    else
        ok = true;
}
while(!ok);
}
// по алфавиту
note tmp;
for( int t=0; t<N; t++)
 
    for( int i=0; i<N; i++)
        if (strcmp ( Note[i].name, Note[t].name) < 0)
    {
    tmp = Note[i];
    Note[i] = Note[t];
    Note[t] = tmp;
}
cout << endl;
 //  вывод
cout << "\n----------------------------------------------\n";
    for(int i=0; i<N; i++)
    
       
        {
            cout << "Имя   " << setw(20) << info[ i ].name << endl;
            cout << "фамилия: " << setw(20) << info[ i ].lastname << endl
                 << "Дата рождения :" << endl
                 << setw(30) << "День  >> " << info[ i ].date[0] << endl
                 << setw(30) << "Месяц >> " << info[ i ].date[1] << endl
                 << setw(30) << "Год   >> " << info[ i ].date[2] << endl;
        }
// Выбор по номеру телефона.
cout << "Введите номер телефона :";
cin.ignore();
cin.get(phone, 50);
for(i=0, j=0; i<N; i++)
    if(strcmp( info[ i ].phone, phone ) == 0)
        ++j;
if(j>0)
{       
        cout << "\n----------------------------------------------\n";
    for( i=0; i<N; ++i)
    {
        if(strcmp(info[i].phone, phone )==0)
        {
            cout << "Имя   " << setw(20) << info[i].name << endl; 
            cout << "фамилия: " << setw(20) << info[i].lastname << endl 
                 << "Дата рождения :" << endl
                 << setw(30) << "День  >> " << info[i].date[0] << endl
                 << setw(30) << "Месяц >> " << info[i].date[1] << endl
                 << setw(30) << "Год   >> " << info[i].date[2] << endl;
         }
        else continue;
        cout << endl;
     }
}else
       cout << "Номер " << phone << " Отсутствует в списке\n";
 
system ("Pause");
return 0;
}
А вот собственно и ошибка двойного ввода.
Миниатюры
Неправильный ввод информации  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2015, 15:08
Ответы с готовыми решениями:

Ввод информации в структуру и поиск элемента по информации, находящейся в этом же элементе
В сервис-центре хранятся квитанции о сданной в ремонт аппаратуре. Каждая квитанция содержит следующую информацию: наименование группы...

Неправильный вывод информации о дисках
Функция выдает не верную информацию. Вместо свободного места выводится размер диска. Все как будто съезжает вниз на один пункт. Не...

Неправильный ввод
while (!(std::cin &gt;&gt; Factor)) { std::cin.clear(); while (std::cin.get() != '\n') continue; std::cout &lt;&lt; &quot;Ввод коэффициента...

2
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 15:17
Цикл do...while выполняется один раз, а затем уже смотрится на выполненное условие. Замените цикл просто на while
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
13.03.2015, 15:55
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <string.h>
#include <iomanip>
#include <algorithm>
using namespace std;
//#define N 3
 
struct note
{
    char name[100];
     char lastname[100];
    char phone[50];
    int date[3];
} info[8];   //структура
 
 
 
int main(void)
{
    const int N=2;
    setlocale (LC_ALL,"Russian");
int i, j;
char phone[50];
note Note[N];
//Ввод данных
for( i=0; i<N; ++i )
{
    cout << "\n\t---- " << i+1 << " ---\nИмя :";
 
    cin >> info[ i ].name;
    cout << "фамилия: ";
    cin >> info[ i ].lastname;
 
    cout << "Номер телефона :";
    cin >> info[ i ].phone, 50 ;
    cout << "Дата :\nЧисло >> ";
    cin >> info[ i ].date[ 0 ];
    if (info[i].date[0] > 30)
    {
        cout << "vvedite ot 1 do 30" << endl;
        cout << setw(15) << "Дата: \t";
        cin >> info[i].date[0];
    }
    cout << "Месяц >> ";
    cin >> info[ i ].date[ 1 ];
    if (info[i].date[1] > 12)
    {
        cout << "vvedite ot 1 do 12" << endl;
        cout << setw(15) << "Mесяц: \t";
        cin >> info[i].date[1];
    }
    cout << "Год >> ";
    cin >> info[ i ].date[2];
    bool ok = false;
do
      {
    if ((info[i].date[2]<1950) || (info[i].date[2]>2000))
       { cout << "vvedite korektnyi god" << endl;
        cin >> info[i].date[2];}
    else
        ok = true;
}
while(!ok);
}
// по алфавиту
note tmp;
for( int t=0; t<N; t++)
 
    for( int i=0; i<N; i++)
        if (strcmp ( Note[i].name, Note[t].name) < 0)
    {
    tmp = Note[i];
    Note[i] = Note[t];
    Note[t] = tmp;
}
cout << endl;
 //  вывод
cout << "\n----------------------------------------------\n";
    for(int i=0; i<N; i++)
 
 
        {
            cout << "Имя   " << setw(20) << info[ i ].name << endl;
            cout << "фамилия: " << setw(20) << info[ i ].lastname << endl
                 << "Дата рождения :" << endl
                 << setw(30) << "День  >> " << info[ i ].date[0] << endl
                 << setw(30) << "Месяц >> " << info[ i ].date[1] << endl
                 << setw(30) << "Год   >> " << info[ i ].date[2] << endl;
        }
// Выбор по номеру телефона.
cout << "Введите номер телефона :";
cin.ignore();
cin.get(phone, 50);
for(i=0, j=0; i<N; i++)
    if(strcmp( info[ i ].phone, phone ) == 0)
        ++j;
if(j>0)
{
        cout << "\n----------------------------------------------\n";
    for( i=0; i<N; ++i)
    {
        if(strcmp(info[i].phone, phone )==0)
        {
            cout << "Имя   " << setw(20) << info[i].name << endl;
            cout << "фамилия: " << setw(20) << info[i].lastname << endl
                 << "Дата рождения :" << endl
                 << setw(30) << "День  >> " << info[i].date[0] << endl
                 << setw(30) << "Месяц >> " << info[i].date[1] << endl
                 << setw(30) << "Год   >> " << info[i].date[2] << endl;
         }
        else continue;
        cout << endl;
     }
}else
       cout << "Номер " << phone << " Отсутствует в списке\n";
 
system ("Pause");
return 0;
}


Внесенные изменения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    cout << "Год >> ";
    cin >> info[ i ].date[2];
    bool ok = false;
do
      {
    if ((info[i].date[2]<1950) || (info[i].date[2]>2000))
       { cout << "vvedite korektnyi god" << endl;
        cin >> info[i].date[2];}  //эта строка перекочевала с 58 строки
    else
        ok = true;
}
while(!ok);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2015, 15:55
Помогаю со студенческими работами здесь

Неправильный ввод
for(i=0;i&lt;n;i++) { std::cin&gt;&gt;temp; if(!std::cin) { std::cin.clear(); while(std::cin.get()!='\n') continue; ...

Неправильный Ввод
Описать как структуру переменную время(с полями часы, минуты, секунды). Составить и протестировать функции: А) которая присваивает...

Проверка на неправильный ввод
Ничего в голову не приходит.Как реализовать следующее:При вводе одного слова(не символа) писало ошибка введите минимум 2 слова?Сделал если...

Неправильный ввод массива
Что я делаю не так? Программа идёт по наклонной уже на стадии ввода элементов массива. Считываются не мои значения. Скрин приложил....

Неправильный ввод русских символов
Тема поднималась уже не раз, но у меня, похоже, особый случай. При запуске программы на моём компе всё работает, а при запуске на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru