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

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

Восстановить пароль Регистрация
 
luent
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 11
11.07.2015, 10:19     Выход из switch #1
Здравствуйте) Листаю учебник "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)? Как выйти из программы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 10:19     Выход из switch
Посмотрите здесь:

C++ switch
C++ Switch C++
Switch C++
C++ Switch
C++ switch
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D_Gon
 Аватар для D_Gon
22 / 11 / 5
Регистрация: 09.07.2015
Сообщений: 47
11.07.2015, 10:31     Выход из switch #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;
}
luent
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 11
11.07.2015, 10:53  [ТС]     Выход из switch #3
Вот оно как. Спасибо)
ящюр
66 / 66 / 10
Регистрация: 15.03.2013
Сообщений: 403
Записей в блоге: 1
11.07.2015, 11:08     Выход из switch #4
2 D Gon Цикл в данном случае выполниться в любом случае хоть один раз.... exit то в цикле задаете на выход.

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

Текущее время: 12:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru