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

Избавиться от goto. - C++

Восстановить пароль Регистрация
 
Мартиника
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43
14.10.2011, 01:55     Избавиться от goto. #1
Нашла в интернете одну очень интересную реализацию меню, но там есть 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
26
27
28
29
30
31
32
void choice(){ // ГґГіГ*êöèÿ âûáîðГ*
l:
    int ch=_getch(); // ñ÷èòûâГ*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ Г*Г*Г¦Г*òîé ГЄГ«Г*ГўГЁГёГЁ
    if(ch==224){ // 224 - ГЅГІГ® ñòðåëî÷êè
      switch(ch){
      case 80:  if(m_pos+1<max_pos) // ГўГ*ГЁГ§
                  ++m_pos;
                menu();
                break;
      case 72:  if(m_pos-1>=0)// ââåðõ 
                  --m_pos;
                menu();
                break;
      case 13:  go(m_pos);// Enter 
                break;
    default:
    goto l;}
    }
   switch(ch){
      case 80:  if(m_pos+1<max_pos) // ГўГ*ГЁГ§ 
                ++m_pos;
              menu();
              break;
      case 72:  if(m_pos-1>=0)// ââåðõ
                  --m_pos;
                menu();
                break;
     case 13:  go(m_pos);// Enter
               break;
    default:
    goto l;}
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 01:55     Избавиться от goto.
Посмотрите здесь:

Выйти из goto. C++
C++ goto?
Что то типа goto C++
Альтернатива goto в С++ C++
C++ Замена goto
C++ Аналог goto
C++ Ненависть к Goto
C++ Goto

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
14.10.2011, 02:07     Избавиться от goto. #2
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
void choice()
{
    int quit = 0;
 
    while (!quit) {
        quit = 1;
        int ch = _getch(); // считываем значение нажатой клавиши
 
        if(ch==224) { // 224 - это стрелочки
            switch(ch){
            case 80: 
                if(m_pos+1<max_pos) // вниз
                  ++m_pos;
                menu();
                break;
            case 72:
                if(m_pos-1>=0)// вверх 
                    --m_pos;
                menu();
                break;
            case 13:
                go(m_pos);// Enter 
                break;
            default:
                quit = 0;
            }
        }
        switch(ch){
            case 80:
                if(m_pos+1<max_pos) // вниз 
                    ++m_pos;
                menu();
                break;
            case 72: 
                if(m_pos-1>=0)// вверх
                    --m_pos;
                menu();
                break;
            case 13: 
                go(m_pos);// Enter
                break;
        default:
            quit = 0;
        }
    }
}
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
14.10.2011, 15:04     Избавиться от goto. #3
Можно и так

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
void choice()
{
         int ch;
 
         while (1) 
         {
                ch = _getch(); // считываем значение нажатой клавиши
 
                if(ch==224) 
                { // 224 - это стрелочки
                        switch(ch)
                        {
  
                        .........                        
 
                                default:
                                        continue;
                        }
                }
                switch(ch)
                {
                
                     ........
 
                        default:
                                continue;
                }
        }  // while (1) 
}
Yandex
Объявления
14.10.2011, 15:04     Избавиться от goto.
Ответ Создать тему
Опции темы

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