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

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

Войти
Регистрация
Восстановить пароль
 
 
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
#1

Прервать цикл из цикла, вложенного в него - C++

02.09.2016, 09:53. Просмотров 456. Ответов 20
Метки нет (Все метки)

Приветствуют. Собственно, вопрос в названии темы.
C++
1
2
3
4
5
6
7
8
9
for(int i = 1; i <= 10; i++)
 for(int j = 1; j <= 5; j++)
{
 if(/* здесь условие выхода из обоих циклов */)
  {
   /* как выйти сразу из 2-х циклов? */
   /* break даст выход только из цикла j */
  }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 09:53     Прервать цикл из цикла, вложенного в него
Посмотрите здесь:

Как правильно прервать/возобновить цикл C++
Составить и отладить программу с использованием вложенного цикла C++
Вывести ряд простых чисел с использованием вложенного цикла C++
Выход из вложенного цикла C++
Не выполняется условие вложенного цикла C++
Оператор вложенного цикла C++
Объясните работу вложенного цикла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nimazzzy
Заблокирован
02.09.2016, 09:58     Прервать цикл из цикла, вложенного в него #2
- Заводить дополнительную булеву переменную, которую проверять в условии внешнего цикла, выставлять во внутреннеим.
- goto
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
02.09.2016, 10:02  [ТС]     Прервать цикл из цикла, вложенного в него #3
nimazzzy, то есть, специального оператора в С++ для этого нет?
gru74ik
Модератор
Эксперт CЭксперт С++
3925 / 1683 / 189
Регистрация: 20.02.2013
Сообщений: 4,744
Записей в блоге: 21
02.09.2016, 10:08     Прервать цикл из цикла, вложенного в него #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Есть. Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
nimazzzy
Заблокирован
02.09.2016, 10:10     Прервать цикл из цикла, вложенного в него #5
Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Специального оператора нет.
Hikari
Хитрая блондиночка $)
1447 / 954 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
02.09.2016, 10:10     Прервать цикл из цикла, вложенного в него #6
Цитата Сообщение от gru74ik Посмотреть сообщение
Ваши циклы в функцию или в лямбду
Вотъ вотъ-с.
И я того же мнения. Плюсую.
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
02.09.2016, 10:16  [ТС]     Прервать цикл из цикла, вложенного в него #7
Цитата Сообщение от gru74ik Посмотреть сообщение
Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
Это понятно. Спасибо за ответ.
Эммм... А что такое лямбда?
Hikari
Хитрая блондиночка $)
1447 / 954 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
02.09.2016, 10:19     Прервать цикл из цикла, вложенного в него #8
Цитата Сообщение от d7d1cd Посмотреть сообщение
что такое лямбда?
https://ru.wikipedia.org/wiki/Анонимная_функция
nimazzzy
Заблокирован
02.09.2016, 10:19     Прервать цикл из цикла, вложенного в него #9
http://en.cppreference.com/w/cpp/language/lambda
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
02.09.2016, 10:26  [ТС]     Прервать цикл из цикла, вложенного в него #10
Hikari, nimazzzy, спасибо за ссылки. Дома почитаю (на работе интернет урезан, эти сайты не открываются).
Может кто-то перепишет мой пример с циклами и покажет как использовать эту анонимную функцию?
nimazzzy
Заблокирован
02.09.2016, 10:35     Прервать цикл из цикла, вложенного в него #11
C++
1
2
3
4
5
6
7
8
    auto f = []()
    {
        for (int i = 1; i <= 10; i++)
            for (int j = 1; j <= 5; j++)
                if (i > 2)
                    return;
    };
    f();
gru74ik
Модератор
Эксперт CЭксперт С++
3925 / 1683 / 189
Регистрация: 20.02.2013
Сообщений: 4,744
Записей в блоге: 21
02.09.2016, 10:48     Прервать цикл из цикла, вложенного в него #12
d7d1cd, учтите, чтобы использовать лямбды, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
02.09.2016, 10:50  [ТС]     Прервать цикл из цикла, вложенного в него #13
Цитата Сообщение от gru74ik Посмотреть сообщение
d7d1cd, учтите, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
Видимо у меня не включен стандарт С++11, так как приведенный пример в C++Builder XE8 вызывает ошибку Expression syntax.
Как включить?
MansMI
1134 / 931 / 239
Регистрация: 08.01.2012
Сообщений: 3,362
02.09.2016, 10:52     Прервать цикл из цикла, вложенного в него #14
как вариант
C++
1
2
3
4
5
6
7
8
9
10
for(int i = 1; i <= 10; i++)
{
   int j;
   for(j = 1; j <= 5; j++)
   {
      .....
      if(почему-то) break;
   }
   if(j<=5) break;
}
d7d1cd
190 / 113 / 35
Регистрация: 30.06.2011
Сообщений: 951
02.09.2016, 10:56  [ТС]     Прервать цикл из цикла, вложенного в него #15
MansMI, это конечно вариант, спасибо. Именно на таких вариантах-костылях у меня сейчас и работает код. Но хочется познать всю мощь языка С++
gru74ik
Модератор
Эксперт CЭксперт С++
3925 / 1683 / 189
Регистрация: 20.02.2013
Сообщений: 4,744
Записей в блоге: 21
02.09.2016, 11:07     Прервать цикл из цикла, вложенного в него #16
Цитата Сообщение от d7d1cd Посмотреть сообщение
C++Builder XE8
Билдер весьма избирательно поддерживает плюсовые стандарты. По крайней мере, это точно так было с родным билдеровским компилятором. Последнее время, насколько мне известно, Embarcadero решили использовать какую-то свою модификацию компилятора clang 3.3, так что, возможно, в новых версиях Билдера что-то изменилось с поддержкой стандарта в лучшую сторону. В любом случае, по этому вопросу лучше создайте отдельную тему в соответствующем разделе (см. правила форума, п. 4.4).

Самый простой выход: установите QtCreator или MS Visual Studio 2015.
rikimaru2013
C++ Game Dev
2379 / 1073 / 235
Регистрация: 30.11.2013
Сообщений: 3,570
02.09.2016, 11:09     Прервать цикл из цикла, вложенного в него #17
gru74ik, просто локальная функция в конкретной единицы трансляции не проще чем сменить IDE ?
nimazzzy
Заблокирован
02.09.2016, 11:10     Прервать цикл из цикла, вложенного в него #18
Проще и эффективнее - просто goto.
gru74ik
Модератор
Эксперт CЭксперт С++
3925 / 1683 / 189
Регистрация: 20.02.2013
Сообщений: 4,744
Записей в блоге: 21
02.09.2016, 11:22     Прервать цикл из цикла, вложенного в него #19
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
gru74ik, просто локальная функция в конкретной единицы трансляции не проще чем сменить IDE ?
Я бы сменил IDE, потому что:
Цитата Сообщение от d7d1cd Посмотреть сообщение
хочется познать всю мощь языка С++
Добавлено через 1 минуту
Цитата Сообщение от nimazzzy Посмотреть сообщение
Проще и эффективнее - просто goto.
Как вариант - да. Но большинство сразу же покроет вас позором и презрением, мало что ссаными тряпками бросаться не начнёт
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2016, 11:59     Прервать цикл из цикла, вложенного в него
Еще ссылки по теме:

C++ Как корректно прервать цикл? (нюансы использования циклов, операторов ветвления и оператора break)
Как реализовать переход на следующую итерацию внешнего цикла из вложенного? C++
C++ Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
C++ Как прервать цикл используя условия ?

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
02.09.2016, 11:59     Прервать цикл из цикла, вложенного в него #20
Цитата Сообщение от gru74ik Посмотреть сообщение
чтобы использовать лямбды, компилятор должен поддерживать стандарт C++11.
А если использовать auto для параметров, то нужен С++14.
Yandex
Объявления
02.09.2016, 11:59     Прервать цикл из цикла, вложенного в него
Ответ Создать тему
Опции темы

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