Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.99/88: Рейтинг темы: голосов - 88, средняя оценка - 4.99
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712

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

02.09.2016, 09:53. Показов 19937. Ответов 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 */
  }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2016, 09:53
Ответы с готовыми решениями:

Некорректная работа цикла do/while, вложенного в цикл for
Помогите!!!Почему не работает цикл while(1)?

Как проверять, нажата ли клавиша Esc, в каждой итерации цикла, и если нажата, то прервать выполнение цикла?
OwenGlendower, это обращение прежде всего к вам. Вызов функции, в которой происходит проверка методом...

Прервать итерацию цикла for
Здравствуйте. Есть цикл For i = 10 To 60 внутри цикла есть условие при котором нужно перейти к следующему значению i If...

20
Заблокирован
02.09.2016, 09:58
- Заводить дополнительную булеву переменную, которую проверять в условии внешнего цикла, выставлять во внутреннеим.
- goto
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.09.2016, 10:02  [ТС]
nimazzzy, то есть, специального оператора в С++ для этого нет?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.09.2016, 10:08
Лучший ответ Сообщение было отмечено Hikari как решение

Решение

Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Есть. Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
4
Заблокирован
02.09.2016, 10:10
Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Специального оператора нет.
1
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
02.09.2016, 10:10
Цитата Сообщение от gru74ik Посмотреть сообщение
Ваши циклы в функцию или в лямбду
Вотъ вотъ-с.
И я того же мнения. Плюсую.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.09.2016, 10:16  [ТС]
Цитата Сообщение от gru74ik Посмотреть сообщение
Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
Это понятно. Спасибо за ответ.
Эммм... А что такое лямбда?
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
02.09.2016, 10:19
Цитата Сообщение от d7d1cd Посмотреть сообщение
что такое лямбда?
https://ru.wikipedia.org/wiki/Анонимная_функция
1
Заблокирован
02.09.2016, 10:19
http://en.cppreference.com/w/cpp/language/lambda
1
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.09.2016, 10:26  [ТС]
Hikari, nimazzzy, спасибо за ссылки. Дома почитаю (на работе интернет урезан, эти сайты не открываются).
Может кто-то перепишет мой пример с циклами и покажет как использовать эту анонимную функцию?
0
Заблокирован
02.09.2016, 10:35
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();
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.09.2016, 10:48
d7d1cd, учтите, чтобы использовать лямбды, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.09.2016, 10:50  [ТС]
Цитата Сообщение от gru74ik Посмотреть сообщение
d7d1cd, учтите, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
Видимо у меня не включен стандарт С++11, так как приведенный пример в C++Builder XE8 вызывает ошибку Expression syntax.
Как включить?
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
02.09.2016, 10:52
как вариант
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;
}
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.09.2016, 10:56  [ТС]
MansMI, это конечно вариант, спасибо. Именно на таких вариантах-костылях у меня сейчас и работает код. Но хочется познать всю мощь языка С++
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.09.2016, 11:07
Цитата Сообщение от d7d1cd Посмотреть сообщение
C++Builder XE8
Билдер весьма избирательно поддерживает плюсовые стандарты. По крайней мере, это точно так было с родным билдеровским компилятором. Последнее время, насколько мне известно, Embarcadero решили использовать какую-то свою модификацию компилятора clang 3.3, так что, возможно, в новых версиях Билдера что-то изменилось с поддержкой стандарта в лучшую сторону. В любом случае, по этому вопросу лучше создайте отдельную тему в соответствующем разделе (см. правила форума, п. 4.4).

Самый простой выход: установите QtCreator или MS Visual Studio 2015.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.09.2016, 11:09
gru74ik, просто локальная функция в конкретной единицы трансляции не проще чем сменить IDE ?
0
Заблокирован
02.09.2016, 11:10
Проще и эффективнее - просто goto.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
02.09.2016, 11:22
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
gru74ik, просто локальная функция в конкретной единицы трансляции не проще чем сменить IDE ?
Я бы сменил IDE, потому что:
Цитата Сообщение от d7d1cd Посмотреть сообщение
хочется познать всю мощь языка С++
Добавлено через 1 минуту
Цитата Сообщение от nimazzzy Посмотреть сообщение
Проще и эффективнее - просто goto.
Как вариант - да. Но большинство сразу же покроет вас позором и презрением, мало что ссаными тряпками бросаться не начнёт
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
02.09.2016, 11:59
Цитата Сообщение от gru74ik Посмотреть сообщение
чтобы использовать лямбды, компилятор должен поддерживать стандарт C++11.
А если использовать auto для параметров, то нужен С++14.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.09.2016, 11:59
Помогаю со студенческими работами здесь

Выход из вложенного цикла
Не получается продолжить поиск со следующей строки после нахождения первого отрицательного элемента в двумерном массиве. Полагаю, нужно...

Выход из вложенного цикла
Собственно как выходить из вложенного цикла ? goto ?

Оператор вложенного цикла
Может ли внешний оператор вложенного цикла не выполниться ни разу?

Завершение вложенного цикла
Господа, подскажите пожалуйста. как завершить принудительно цикл в цикле, только внутренний цикл. For i = 101 To 2 Step -1 ...

Ускорить работу вложенного цикла for() C#
Добрый день. Имеется цикл в котором подбираются коэффициенты к массивам таким образом, чтобы коэф регрессии стремился к нулю for...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru