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

Something about "goto" - C++

Восстановить пароль Регистрация
 
Escapable
53 / 53 / 1
Регистрация: 09.11.2010
Сообщений: 120
26.12.2010, 01:26     Something about "goto" #1
Накидал следующую прогу. Насколько я знаю, использовать оператор безусловного перехода считается дурным тоном но я так и не могу догнать как, в данном случае, можно обойтись без него? Как еще можно завершить выполнение внутреннего цикла? Если использовать "break", то программа будет продолжаться дальше и выводить не нужные символы.
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
#include <iostream>
using namespace std;
 
int main()
{
    char ch;
 
    for(;;)
    {
 
        cin >> ch;
 
        if (ch == '.')  
        {
            cout << "Done!" << endl;
            break; 
        }
        
        // Из верхнего регистра в нижний
        while(ch >= 65 && ch < 97) 
        {
            ch += 32;
            cout << ch << endl;
            goto exit; // ??
        }
 
        // Из нижнего регистра в верхний 
        while(ch >= 97 && ch < 122) 
        {
            ch -= 32;
            cout << ch << endl;
        }
    exit:   ; 
    }
 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
26.12.2010, 01:52     Something about "goto" #2
хм... а зачем такие мансы?!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 // Из верхнего регистра в нижний
                while(ch >= 65 && ch < 97) 
                {
                        ch += 32;
                        cout << ch << endl;
                        goto exit; // ??
                }
 
                // Из нижнего регистра в верхний 
                while(ch >= 97 && ch < 122) 
                {
                        ch -= 32;
                        cout << ch << endl;
                }
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
26.12.2010, 01:53     Something about "goto" #3
Хм... зачем тут вообще использование while? Циклов даже и не предполагается. Используйте if...else, вопрос отпадет сам собой. А обойтись без goto можно всегда
Escapable
53 / 53 / 1
Регистрация: 09.11.2010
Сообщений: 120
26.12.2010, 02:12  [ТС]     Something about "goto" #4
Оу... Моя оплошность. Действительно с if/else все замечательно выходит. Ну все таки интересно, а как выйти из глубоко-глубоко вложенного цикла без "goto"? Или тут надо смотреть по обстоятельствам?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.12.2010, 02:17     Something about "goto" #5
Escapable,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    while(1)
    {
       while(1)
       {
          while(1)
          {
              if(//something)
                  throw 0;
          }
       }
    }
    catch(...)
    {
    }
    return 0;
}
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
26.12.2010, 02:38     Something about "goto" #6
ForEveR, мне кажется вы пропустили try
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    while(1)
    try{
       while(1)
       {
          while(1)
          {
              if(//something)
                  throw 0;
          }
       }
    }
    catch(...)
    {
    }
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Escapable Посмотреть сообщение
Оу... Моя оплошность. Действительно с if/else все замечательно выходит. Ну все таки интересно, а как выйти из глубоко-глубоко вложенного цикла без "goto"? Или тут надо смотреть по обстоятельствам?
можно еще структурировать вашу программу и впихать ваши циклы в функцию. return из любого места вернет вас обратно в вызывающую функцию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 02:46     Something about "goto"
Еще ссылки по теме:

При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." C++
Наследование классов "Заявка", "Техническое задание", "Техническое предписание" C++
C++ Переменные "емкость", "Галлон", "Бензин"

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.12.2010, 02:46     Something about "goto" #7
vx5, Да) Действительно
Yandex
Объявления
26.12.2010, 02:46     Something about "goto"
Ответ Создать тему
Опции темы

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