Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LuSkar
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 23
#1

Switch default и cin - C++

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

Проблема в следующем: Если в case есть cin то после завершения кейса выбирается 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
        
                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 - C++
У меня есть якобы такой код на С++ Builder`e. Я сделал к каждому сase свою формулу. в ListBoxe у меня есть 4 строчка, где должен быть...

Недопонимание с switch и выводом default - C++
Задание: сделать так что бы при вводе целого числа (от 1 до 7 которые соответствует дням недели, 1- понедельник, 2 -вторник и т.д.)...

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

В операторе switch всегда срабатывает default - C++
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default, почему так? #define WINVER 0x0501 ...

Для чего нужны break и default в switch - C++
что означает строка break и default в codeblocks? пример: #include using namespace std; int main() {

Неполадка с default в switch-case - вывод срабатывает дважды - C++
Здравствуйте! Такая вот ерундовая проблема, но хотелось бы узнать почему происходит именно так =) Есть функция, проверяющая...

4
v.a.l.i.d
413 / 378 / 10
Регистрация: 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 / 0
Регистрация: 22.10.2011
Сообщений: 23
08.01.2013, 16:32  [ТС] #3
После завершения case 1 или case 2 срабатывает default. Я обнаружил, что это происходит из-за наличия cin в кейсах.
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
08.01.2013, 16:52 #4
Сейчас я себе скопирую эту программу и проверю как работает. Но вроде должна бы нормально

Добавлено через 4 минуты
ошибок нет. Все работает и в default не заходит если нажать 1 или 2
0
LuSkar
0 / 0 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

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

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...


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

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

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