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

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

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

Выход из switch - C++

11.07.2015, 10:19. Просмотров 799. Ответов 5
Метки нет (Все метки)

Здравствуйте) Листаю учебник "cpp для чайников" и параллельно пытаюсь добавить что-нибудь из выученного в игру, типа "угадай число". Пытался сделать главное меню на switch case. Меню работает, но(!) мне нужно ещё и как-то сделать выход из выбранного case обратно в меню.
Где-то здесь в подобной теме видел совет использовать цикл с постусловием(кстати, почему с пост? Логичнее было бы ведь сначала выбрать какой-то из пунктов, а затем уже запускать switch, то бишь юзать while), попробовал, вышло так:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main(int argc, char* argv[]){
    
    
    /////
    setlocale(LC_ALL, "Russian");
    
    int secret_number;//случайное число
    int sravn;//введённое пользователем число
    int score=0;//счёт
    int repeat;//проверка повтор\выход
    int Game;//меню
    
    
    
 
    cout<<"1.Новая игра \n2.О программе";
    cin>>Game;
    
 
    
            
do{
 
        
        switch(Game){
        
            case(1):
                
                do{
                    
                    srand(time(NULL));
                    secret_number = 1 + rand()%10;
                    
                    
                        do{
                            
                            cout<<"Введите число: ";
                            cin>>sravn;
                            
                            if(sravn<secret_number){
                                                               score=score - 1;                             
                                                               cout<<"Неверно! Ваше число меньше загаданного\n"
                                                                      <<score; 
                                                                
                                                                 
                                
                            }
                            else
                            if(sravn>secret_number){
                                 score=score - 1;                               
                                                               cout<<"Неверно! Ваше число больше загаданного\n"
                                                                      <<score; 
                            }
                        }while(sravn!=secret_number);
                    
                    cout<<"\n Вы победили! Ваш счёт:  "
                                              <<score;
                          <<"\nВведите 1, если хотите повторить\n";
                    
                    score=score+10;
                    cin>>repeat;
                    
                }while(repeat==1);
                
                break;
                
            case(2):
                cout<<"Информация о программе\n";
                break;
            case(3):
                
                exit=true;
                break;
                
        }
    cin>>Game;//По идее, если после выполнения одного из case сюда вводится 4, то программа снова должна 
                         //вывести главное меню. Вот только ни хрена не работает                                        
    
}while(Game!=4);
        return 0;
        
}
Как быть? И, кстати, что делать с case(3)? Как выйти из программы?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 10:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход из switch (C++):

Оптимальная конструкция switch-case-while / while-switch-case - C++
Имеется конструкция типа: switch() { case 1: while() { ... }

Switch case внутри switch case - C++
Привет всем! Нужна помощь. Пишу калькулятор с консольным меню. Так вот, используется цикл while, внутри которого у меня switch...

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

Switch C++ - C++
Всем привет К примеру есть (на Дэлфи): Case a of 1..5: begin ..... end; т.е. сработает на числах от 1 до 5. нужно эту же запись...

Switch - C++
Как эту же программу переделать с помощью оператора switch.... #include &lt;iostream.h&gt; #include &lt;conio.h&gt; void main() { ...

switch - C++
swith(n) { case 1: { return 0; // Надо ли в этом случае писать break ? // В каких случаях работа будет нарушена ? } }

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
D_Gon
24 / 13 / 5
Регистрация: 09.07.2015
Сообщений: 47
11.07.2015, 10:31 #2
Цитата Сообщение от luent Посмотреть сообщение
видел совет использовать цикл с постусловием
Чтобы тело цикла выполнилось хоть один раз.
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
#include <iostream>
 
int main(){
 
    int input;
    bool exit = false;
 
    do{
        std::cout << ": ";
        std::cin >> input;
 
        switch( input ){
            case 1:
                std::cout << "input = " << input << std::endl;
                break;
            case 2:
                std::cout << "input = " << input << std::endl;
                break;
            case 3:
                std::cout << "input = " << input << std::endl;
                exit = true;
                break;
        }
    }while( !exit );
 
    return 0;
}
1
luent
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 11
11.07.2015, 10:53  [ТС] #3
Вот оно как. Спасибо)
0
ящюр
97 / 97 / 24
Регистрация: 15.03.2013
Сообщений: 520
Записей в блоге: 1
11.07.2015, 11:08 #4
2 D Gon Цикл в данном случае выполниться в любом случае хоть один раз.... exit то в цикле задаете на выход.

2 luent у вас уже реализована же подобная конструкция
C++
1
2
3
4
5
....
cin>>repeat;
                    
                }while(repeat==1);
...
1
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 282
Завершенные тесты: 1
11.07.2015, 11:17 #5
luent, вот готовое решение: Программа выводит один результат
1
luent
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 11
11.07.2015, 13:51  [ТС] #6
ящюр, да, спасибо, разобрался) Перенёс меню внутрь цикла, всё заработало)
Gelo123321, благодарю)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 13:51
Привет! Вот еще темы с ответами:

Switch - C++
Ошибка в 19 строке: n cannot appear in a constant-expression (потому что n это переменная?). #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Switch - C++
Определить порядковый номер того дня високосного года, который имеет заданую дату и месяц. В программе воспользоваться командой &quot;switch&quot;. ...

switch - C++
5. как пользоваться switch()

Switch - C++
Простите за глупый вопрос, но можно ли в switch работать с действительными числами и если да то как?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.07.2015, 13:51
Ответ Создать тему
Опции темы

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