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

Switch default и cin - C++

08.01.2013, 15:10. Просмотров 492. Ответов 4
Метки нет (Все метки)

Проблема в следующем: Если в case есть cin то после завершения кейса выбирается default, как избежать этого?
http://www.cyberforum.ru/cpp-beginners/thread1819336.html
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
        
                int i;
        char s[10];
        do {           
        cout<<"— Поиск —"<<endl<<endl;
        cout<<"Выберите пункт меню:"<<endl;
        cout<<endl;
        cout<<"1."<<endl;
        cout<<"2."<<endl;
        cout<<"3."<<endl;
        cout<<endl;
        cout<<"Выбранный пункт меню: "; 
        cin.getline(s,10); 
        i=atoi(s);
        switch(i)
        {
            case 1:
            {   
                string a;
                cin>>a; cout<<a;
                system("pause");  
                system("cls");        
                break; 
                break;                    
            }
            case 2:
            {
                string a;
                cin>>a; cout<<a;
                system("pause");  
                system("cls");        
                break;
            }
                default:if(i>3 || i<1) {cout<<endl<<"Введите значения от 1 до 3"<<endl<<endl; system("pause"); system("cls"); break;}
        }
        }
        while (i!=3);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 15:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Switch default и cin (C++):

Недопонимание с switch и выводом default
Задание: сделать так что бы при вводе целого числа (от 1 до 7 которые...

Возвращение значения из switch-default
Здравствуйте! У меня задача на создание двох фунций, которые вычисляют среднее...

В операторе switch всегда срабатывает default
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий...

Для чего нужны break и default в switch
что означает строка break и default в codeblocks? пример: #include ...

Получить текущее значение в switch/case в секции default
Добрый день! Можно ли каким-то образом НЕ имея переменных получить значение,...

4
v.a.l.i.d
416 / 381 / 113
Регистрация: 21.09.2012
Сообщений: 913
08.01.2013, 16:11 #2
если i будет 1 то сработает case 1:
если i будет 2 то сработает case 2:
во всех остальных случаях - default

Добавлено через 1 минуту
в 24 строке лишний break можно убрать
0
LuSkar
0 / 0 / 1
Регистрация: 22.10.2011
Сообщений: 23
08.01.2013, 16:32  [ТС] #3
После завершения case 1 или case 2 срабатывает default. Я обнаружил, что это происходит из-за наличия cin в кейсах.
0
v.a.l.i.d
416 / 381 / 113
Регистрация: 21.09.2012
Сообщений: 913
08.01.2013, 16:52 #4
Сейчас я себе скопирую эту программу и проверю как работает. Но вроде должна бы нормально

Добавлено через 4 минуты
ошибок нет. Все работает и в default не заходит если нажать 1 или 2
0
LuSkar
0 / 0 / 1
Регистрация: 22.10.2011
Сообщений: 23
08.01.2013, 18:45  [ТС] #5
Только что создал новый проект и проверил, после выполнения кейса получаем I'm default.

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
#include<iostream>
#include<string>
using namespace std;    
 
int main()
{
        int i;
        char s[10];
        do {           
        cout<<"Select number:"<<endl;
        cout<<endl;
        cout<<"1."<<endl;
        cout<<"2."<<endl;
        cout<<"3."<<endl;
        cout<<endl;
        cout<<"Your choose: "; 
        cin.getline(s,10); 
        i=atoi(s);
        switch(i)
        {
            case 1:
            {   
                cout<<"Case 1: ";
                string a;
                cin>>a; cout<<a<<endl;
                system("pause");  
                system("cls");        
                break;                
            }
            case 2:
            {
                cout<<"Case 2: ";
                string a;
                cin>>a; cout<<a<<endl;
                system("pause");  
                system("cls");        
                break;
            }
                default:if(i>3 || i<1) {cout<<endl<<endl<<"I'm Default!!!"<<endl<<endl; system("pause"); system("cls"); break;}
        }
        }
        while (i!=3);
}
0
08.01.2013, 18:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 18:45
Привет! Вот еще темы с решениями:

Неполадка с default в switch-case - вывод срабатывает дважды
Здравствуйте! Такая вот ерундовая проблема, но хотелось бы узнать почему...

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

std::cin & switch case
Всем привет. Вообщем проблема такая: while(val) { int choice;...

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


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

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

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