Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
1

Функция cin.get - информация не выводится

10.11.2015, 22:26. Просмотров 300. Ответов 14
Метки нет (Все метки)

При вводе числа данная программа работает нормально, однако если ввести, например, букву по идее должно появляться сообщение "Ошибка! Это не цифра!", но вместо этого программа просто закрывается. В чем здесь ошибка?


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
#include <iostream>
using namespace std;
#include<locale>
 
int main()
 
{
    setlocale(LC_ALL, "Russian");
 
    int  ic;
    cout << "\nВведите любую десятичную цифру: ";
    cin >> ic;
    cout << '\n';
    switch (ic)
    {
    case 0: case 1: cout << "один, ";
    case 2: case 3: cout << "три, ";
    case 4: case 5: cout << "пять, ";
    case 6: case 7: cout << "семь, ";
    case 8: case 9: cout << "девять. ";
        break;  // Выход из переключателя
    default: cout << "Ошибка! Это не цифра!";
                              
    } //Конец переключателя 
        
    cin.get();
    cin.get();
    return 0;
 
}      //Конец переключателя
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2015, 22:26
Ответы с готовыми решениями:

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже...

Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()?
какую библиотеку надо подключать чтоб работала функция _getch() и функция...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до...

Не выводится информация из файла
не выводится информация с файла! #include &lt;iostream&gt; #include &lt;fstream&gt;...

14
zss
Модератор
Эксперт С++
7404 / 6796 / 4299
Регистрация: 18.12.2011
Сообщений: 17,946
Завершенные тесты: 1
10.11.2015, 22:29 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
#include <iostream>
using namespace std;
#include<locale>
 
int main()
 
{
    setlocale(LC_ALL, "Russian");
 
    char  ic;
    cout << "\nВведите любую десятичную цифру: ";
    ic=cin.get();
    cin.get();;
    cout << '\n';
    switch (ic)
    {
    case '0': case '1': cout << "один, ";break;
    case '2': case '3': cout << "три, ";break;
    case '4': case '5': cout << "пять, ";break;
    case '6': case '7': cout << "семь, ";break;
    case '8': case '9': cout << "девять. ";break;
    default: cout << "Ошибка! Это не цифра!";
                              
    } //Конец переключателя 
        
    cin.get();
    cin.get();
    return 0;
 
}      //Конец переключателя
1
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
10.11.2015, 22:30 3
C++
1
2
3
4
5
if(!cin)
{
    cin.clear();//сбрасывает флаг ошибки
    cout << "Ошибка! Это не цифра!";
}
1
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
10.11.2015, 22:41  [ТС] 4
подскажите, в какое место данный код нужно вставить?
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
10.11.2015, 22:42 5
Цитата Сообщение от tst Посмотреть сообщение
подскажите, в какое место данный код нужно вставить?
Сразу после ввода.
C++
1
2
3
4
5
6
cin>>dst;//читаем что-то, куда-то
if(!cin)
{
    cin.clear();//сбрасывает флаг ошибки
    cout << "Что-то пошло не так, не читается, зараза!";
}
1
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
10.11.2015, 22:47  [ТС] 6
Получилось вот так, но почему-то все равно не работает

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
#include <iostream>
using namespace std;
#include<locale>
 
int main()
 
{
    setlocale(LC_ALL, "Russian");
 
    int  ic;
    cout << "\nВведите любую десятичную цифру: ";
    cin >> ic;
 
    if (!cin)
    {
        cin.clear();//сбрасывает флаг ошибки
        cout << "Ошибка! Это не цифра!";
    }
    cout << '\n';
    switch (ic)
    {
    case 0: case 1: cout << "один, ";
    case 2: case 3: cout << "три, ";
    case 4: case 5: cout << "пять, ";
    case 6: case 7: cout << "семь, ";
    case 8: case 9: cout << "девять. ";
        break;  // Выход из переключателя
 
 
    } //Конец переключателя 
        
    cin.get();
    cin.get();
    
    return 0;
 
 
}      //Конец переключателя
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
10.11.2015, 22:55 7
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
#include <iostream>
using namespace std;
#include<locale>
 
int main()
 
{
    int  ic;
    cout << "\nВведите любую десятичную цифру: ";
    cin >> ic;
 
    if (!cin || ic<0 || ic>9)
    {
        cin.clear();//сбрасывает флаг ошибки
        cout << "Ошибка! Это не цифра!"<<endl;
    }else
    {
        switch (ic)
        {
        case 0: case 1: cout << "один, ";
        case 2: case 3: cout << "три, ";
        case 4: case 5: cout << "пять, ";
        case 6: case 7: cout << "семь, ";
        case 8: case 9: cout << "девять. ";
            break;  // Выход из переключателя
 
 
        } //Конец переключателя
    }
 
    cin.get();
    cin.get();
 
    return 0;
 
 
}
1
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
10.11.2015, 23:02  [ТС] 8
Renji, проверяю, но не работает. Ввожу латинскую букву и программа сразу закрывается


zss, код работает правильно, если оставить один break как было в первоначальном варианте
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
10.11.2015, 23:06 9
Значит, Студия опять забила на стандарты и пытается плеваться исключениями. Попробуйте cin.exceptions(std::istream::goodbit); в начале main.
0
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
10.11.2015, 23:12  [ТС] 10
Renji, к сожалению, окошко по-прежнему закрывается
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
10.11.2015, 23:17 11
Тогда ХЗ, под g++ в Дебиане все работает как часы.
0
Mesteriis
379 / 162 / 51
Регистрация: 08.08.2015
Сообщений: 1,149
Завершенные тесты: 1
11.11.2015, 10:19 12
А это заскоки студии, попробуй тормазнуть консольку system ("pause") или слипом хоть поймешь что он говорит
0
zss
Модератор
Эксперт С++
7404 / 6796 / 4299
Регистрация: 18.12.2011
Сообщений: 17,946
Завершенные тесты: 1
11.11.2015, 18:13 13
Цитата Сообщение от tst Посмотреть сообщение
если оставить один break как было в первоначальном варианте
А что, было задумано, чтобы при вводе '1' выводились все тексты
" один, три, пять, семь, девять."?
1
tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 216
11.11.2015, 19:23  [ТС] 14
zss, в данном случае требуется перечислить все нечетные целые цифры, которые не меньше, чем заданная
0
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
11.11.2015, 20:56 15
Цитата Сообщение от tst Посмотреть сообщение
zss, в данном случае требуется перечислить все нечетные целые цифры, которые не меньше, чем заданная
Зачем тогда вообще switch?
C++
1
2
3
4
5
const char*table[]={"один","три","пять","семь","девять"};
int n;
cin>>n;
for(int i=0;i*2+1<=n;++i)
    cout<<table[i]<<endl;
0
11.11.2015, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2015, 20:56

Не выводится информация в файл через fstream
#include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main()...

Вывод информации с файла на консоль. Не выводится информация с файлов
Написал прогу для вывода информации из файлов, но что-то пошло не так. Все...

Файл создается, но в него не записываеться информация, и не выводится в консоль
#include &lt;vcl.h&gt; #pragma hdrstop #include&lt;stdlib.h&gt; #include&lt;iostream.h&gt;...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru