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

При вводе букв программа вылетает

19.06.2018, 14:59. Показов 1950. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Помогите пожалуйста исправить программу. Нужно сделать чтобы при выборе действия принимались только числа, а при вводе букв программа не вылетала

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
#include <fstream> 
#include <iostream> 
#include <string> 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std; 
 
class Zapisi 
{ 
protected: 
struct Inf_ 
{ 
string fam; 
string name; 
string otches; 
string gorod; 
string god; 
 
} Inf; 
public: 
Zapisi(); 
void input(); 
void record(); 
void read_(); 
void Find(); 
void Del(); 
}; 
int main(void) 
{ 
Zapisi objZapisi; 
int choose; 
while (choose!=5)
{ 
cout << endl; 
cout << "Viberite deystvie:" << endl; 
cout << "1: dobavit zapis" << endl; 
cout << "2: prosmotr" << endl; 
cout << "3: poisk" << endl; 
cout << "4: delate zapis" << endl; 
cout << "5: Exit" << endl; 
cin >> choose; 
cout << endl; 
switch(choose){ 
case 1: 
{ 
objZapisi.input(); 
objZapisi.record(); 
break; 
} 
case 2: 
{ 
objZapisi.read_(); 
break; 
}case 3: 
{ 
objZapisi.Find(); 
break; 
}case 4: 
{ 
objZapisi.Del(); 
break; 
} 
}}
 
} 
Zapisi::Zapisi() 
{ 
} 
void Zapisi::input() 
{ 
cout << "Input Familia: "; 
cin >> Inf.fam; 
cout << "Input Name: "; 
cin >> Inf.name; 
cout << "Input Otchestvo: "; 
cin >> Inf.otches; 
cout << "Input Gorod: "; 
cin >> Inf.gorod; 
cout << "Input God rojdeniya: "; 
cin >> Inf.god; 
} 
void Zapisi::record() 
{ 
ofstream out("file.txt", ios_base::app); 
out << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
out.close(); 
} 
void Zapisi::read_() 
{ 
ifstream in("file.txt"); 
while (in >> Inf.fam >> Inf.name >> Inf.otches >> Inf.gorod >> Inf.god){ 
cout << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
} 
in.close(); 
} 
void Zapisi::Find() 
{ 
ifstream in("file.txt"); 
cout << "Input Familia, Name, Otchestvo" << endl; 
string famf, namef, otchesf; 
cin >> famf >> namef >> otchesf; 
while (in >> Inf.fam >> Inf.name >> Inf.otches >> Inf.gorod >> Inf.god){ 
if ( famf==Inf.fam && namef==Inf.name && otchesf==Inf.otches )
cout << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
} 
} 
void Zapisi::Del(){ 
ofstream out("file.txt", ios_base::trunc); 
out.close(); 
}
Проблема как я понял в условие while
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.06.2018, 14:59
Ответы с готовыми решениями:

Вылетает программа при вводе boolean через scanf
Вылетает программа при вводе boolean через scanf #include &lt;bits/stdc++.h&gt; #include&lt;windows.h&gt; using namespace std; struct...

При вводе в переменную букв, программа закицливается
При вводе букв с консоли, программа зацикливается и выводит: &quot;Enter the demension of the matrix: There is no such matrix. Enter the...

При вводе букв (переменных)глючит программа,а должно выбивать ошибку
Программа высчитывает определённую функцию (при вводе переменных стоят ограничения). Извините, в программировании не сильна. Это скорее...

1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
19.06.2018, 16:15
Aleksey6898,
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
#include <cstddef>
#include <iostream>
 
#include <fstream> 
#include <iostream> 
#include <string> 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std; 
 
class Zapisi 
{ 
protected: 
struct Inf_ 
{ 
string fam; 
string name; 
string otches; 
string gorod; 
string god; 
 
} Inf; 
public: 
Zapisi(); 
void input(); 
void record(); 
void read_(); 
void Find(); 
void Del(); 
}; 
int main(void) 
{ 
Zapisi objZapisi; 
int choose {0}; 
while (choose!=5)
{
cout << endl; 
cout << "Viberite deystvie:" << endl; 
cout << "1: dobavit zapis" << endl; 
cout << "2: prosmotr" << endl; 
cout << "3: poisk" << endl; 
cout << "4: delate zapis" << endl; 
cout << "5: Exit" << endl; 
cin >> choose;
cout << endl; 
switch(choose){ 
case 1: 
{ 
objZapisi.input(); 
objZapisi.record(); 
break; 
} 
case 2: 
{ 
objZapisi.read_(); 
break; 
}case 3: 
{ 
objZapisi.Find(); 
break; 
}case 4: 
{ 
objZapisi.Del(); 
break; 
} 
default:
    cin.clear(); // на случай, если предыдущий ввод завершился с ошибкой
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
}}
 
} 
Zapisi::Zapisi() 
{ 
} 
void Zapisi::input() 
{ 
cout << "Input Familia: "; 
cin >> Inf.fam; 
cout << "Input Name: "; 
cin >> Inf.name; 
cout << "Input Otchestvo: "; 
cin >> Inf.otches; 
cout << "Input Gorod: "; 
cin >> Inf.gorod; 
cout << "Input God rojdeniya: "; 
cin >> Inf.god; 
} 
void Zapisi::record() 
{ 
ofstream out("file.txt", ios_base::app); 
out << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
out.close(); 
} 
void Zapisi::read_() 
{ 
ifstream in("file.txt"); 
while (in >> Inf.fam >> Inf.name >> Inf.otches >> Inf.gorod >> Inf.god){ 
cout << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
} 
in.close(); 
} 
void Zapisi::Find() 
{ 
ifstream in("file.txt"); 
cout << "Input Familia, Name, Otchestvo" << endl; 
string famf, namef, otchesf; 
cin >> famf >> namef >> otchesf; 
while (in >> Inf.fam >> Inf.name >> Inf.otches >> Inf.gorod >> Inf.god){ 
if ( famf==Inf.fam && namef==Inf.name && otchesf==Inf.otches )
cout << Inf.fam << " " << Inf.name << " " << Inf.otches << " " << Inf.gorod << " " << Inf.god << endl; 
} 
} 
void Zapisi::Del(){ 
ofstream out("file.txt", ios_base::trunc); 
out.close(); 
}
Добавлено через 35 секунд
нужно после неправильного ввода буфер почистить у потока

Добавлено через 41 секунду
и флаги состояний сбросить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2018, 16:15
Помогаю со студенческими работами здесь

Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими
Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими .Если непонятно то...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

Вылетает ошибка при последнем вводе
В чем проблема? Помогите пожалуйста #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Organization { ...

Почему при вводе данных вылетает ошибка
вот написал программу #include &lt;iostream&gt; using namespace std; #define N 2 struct Spis { char KODp; char Fm; char TARIF; ...

Бесконечный цикл при вводе букв
Написал простую программку, в которой считается площадь, высота и диагонали параллелограмма. Через while я смог добиться того, чтобы при...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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