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

Возврат назад в главное меню из подпункта меню - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.88
kol6aca
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 4
17.07.2012, 17:27     Возврат назад в главное меню из подпункта меню #1
Добрый вечер, подскажите пожалуйста, как организовать многоуровневое меню? А конкретно, надо из подменю вернуться в предыдущее меню.
Я сделал основное, затем подменю, а вот выйти назад из него не получается, выполняется следующий case из основного меню. Получается сделать только оператором goto, которым я возвращаюсь к началу цикла основного меню.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
17.07.2012, 18:57     Возврат назад в главное меню из подпункта меню #2

Не по теме:

Дети, использование оператора goto небезопасно в домашних условиях (с)


А чем Вас не устраивает цикл
C++
1
while(true)
или другой какой то?
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
17.07.2012, 19:09     Возврат назад в главное меню из подпункта меню #3
break; после каждого case, а возвращать циклом,, как написали выше
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
17.07.2012, 19:12     Возврат назад в главное меню из подпункта меню #4
Применение goto для выхода из глубокого цикла в принципе не такой то уж и плохой поступок. Как вариант заведите переменную bool flag и всюду проверяйте что в ней чтобы ориентироваться заходили ли вы уже в подменю или это только первый проход, но с goto в данном случае код будет выглядеть значительно проще.
kol6aca
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 4
18.07.2012, 00:06  [ТС]     Возврат назад в главное меню из подпункта меню #5
ну вот пример, выход в главное осуществляем с помощью goto. все-таки хотелось бы его избежать, только я не знаю, куда пихать еще один цикл while(true)?
если убрать goto, то при нажатии "вернуться в главное меню", то прога выводит "press any key" и выходит из программы..

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
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
int main()
{
unsigned int counter;
bool exit=false;
 
loop:
 
while (!exit)
{                   //начало внешнего while
cout<<"----------MENU----------";
cout<<"\n[1] show a"<<"\n[2] exit"<<endl;
        cin>>counter;
        switch (counter)
            {       //начало внешнего switch
            case 1:
                {              //начало case 1
                cout<<"a"<<endl;
                while(!exit)
                    {       //начало внутреннего while
                    cout<<"----------UNDER_MENU----------";
                    cout<<"\n[1] show c"<<"\n[2] show b"<<"\n[3] show e"<<"\n[4] show h"<<"\n[5] show i"<<"\n[0] back to main"<<endl;
                        cin>>counter;
                        switch (counter)
                            {            //начало внутреннего switch
                            case 1:
                                cout<<"c"<<endl;;
                                break;
                            case 2:
                                 cout<<"b"<<endl;
                                 break;
                            case 3:
                                cout<<"e"<<endl;
                                break;
                            case 4:
                                 cout<<"h"<<endl;
                                 break;
                            case 5:
                                cout<<"i"<<endl;
                                break;
                            case 0:
                                goto loop;   //как избежать этого?
                                exit=true;
                                break;
 
                            }           //конец внутреннего switch
                    }  //конец внутреннего while
                }    //конец case 1
            case 2:
                {
                exit=true;
                cout<<"Press any key for exit...\n";
                break;
                }
            }  //конец внешнего switch
}   //конец внешнего while
getch();
return 0;
}
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
18.07.2012, 01:02     Возврат назад в главное меню из подпункта меню #6
Цитата Сообщение от kol6aca Посмотреть сообщение
ну вот пример, выход в главное осуществляем с помощью goto.
ну и сделай каждое подменю отдельной функцией
что то типа
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
switch(ch1)
{
 case '1'
    fnc1();
   break:
 case '2'
    fnc2();
   brear;
...........................
 
void fnc1()
{
..............
switch(ch2)
{
  case '1':
   ........
  break;
 case '2':
   ........
  break;
 case '3':
   return;
 }
}
Добавлено через 4 минуты
таким способом хоть сто вложений сделаешь

Добавлено через 43 минуты
Цитата Сообщение от kol6aca Посмотреть сообщение
если убрать goto, то при нажатии "вернуться в главное меню", то прога выводит "press any key" и выходит из программы..
Цитата Сообщение от kol6aca Посмотреть сообщение
} //конец внутреннего while
} //конец case 1
case 2:
{
exit=true;
а брек после первого касе кто делать будет???
Yandex
Объявления
18.07.2012, 01:02     Возврат назад в главное меню из подпункта меню
Ответ Создать тему
Опции темы

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