Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Pavel Rem
11 / 11 / 2
Регистрация: 15.07.2016
Сообщений: 132
1

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?

26.09.2016, 01:53. Просмотров 1910. Ответов 23
Метки нет (Все метки)

Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример :
C++
1
2
3
4
5
6
for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
        if (что то) //выполнить continue для внешнего цикла ( сделать i+1 )
    }
    //продолжение внешнего цикла
}
Вложенный цикл является проверкой, и если он проверку не проходит надо сделать continue для внешнего цикла, что б он не продолжал выполнять код прописанный после.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2016, 01:53
Ответы с готовыми решениями:

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Добрый вечер. Возможен ли в C++ переход на следующую итерацию внешнего цикла из вложенного? ...

Не осуществляется переход на следующую итерацию цикла
Здравствуйте! Сделал простейший калькулятор на C#, чтобы вспомнить основы языка. В конце, вместо...

Выход из цикла и переход на следующую итерацию
как в в 1С сделать выход из цикла или перейти на следующую итерацию в цикле??... в С++ это...

break из вложенного цикла прерывает итерацию и объемлющего
//#define CF #include &lt;cstddef&gt; #ifdef CF #include &lt;iostream&gt; #else #include &lt;fstream&gt; #endif...

23
cyber-satyr
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 01:54 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от Pavel Rem Посмотреть сообщение
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример
1. goto;
2. вынести внутренний цикл в метод или функцию.
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 02:22 3
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от cyber-satyr Посмотреть сообщение
1. goto;
2. вынести внутренний цикл в метод или функцию.
3. Внешний флаг;
4. break из внутреннего, проверка выхода из внутреннего: по условию цикла или по break.
0
cyber-satyr
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 02:51 4
Цитата Сообщение от nd2 Посмотреть сообщение
3. Внешний флаг;
C++
1
2
3
4
5
6
for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
        if (ВНЕШНИЙ_ФЛАГ) //и что дальше? set внутренний флаг, if (внутренний флаг)
    }
    //продолжение внешнего цикла
}
Цитата Сообщение от nd2 Посмотреть сообщение
break из внутреннего, проверка выхода из внутреннего: по условию цикла или по break
Ну а перед break из внутреннего установим флаг, чтобы потом понять вышли мы по break'у или нет. Ага.
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 03:03 5
Цитата Сообщение от cyber-satyr Посмотреть сообщение
Ну а перед break из внутреннего установим флаг, чтобы потом понять вышли мы по break'у или нет. Ага.
Флаг тут необязателен, достаточно проверить значение j.

Добавлено через 1 минуту
cyber-satyr, ты не врубаешься? Да?
0
cyber-satyr
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 03:08 6
Цитата Сообщение от nd2 Посмотреть сообщение
Флаг тут необязателен, достаточно проверить значение j.
Самуил, как ты проверишь "значение j" во внешнем цикле когда во внешнем цикле никакого "j" нету?
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 03:10 7
Цитата Сообщение от cyber-satyr Посмотреть сообщение
во внешнем цикле когда во внешнем цикле никакого "j" нету?
По прежнему не врубаешься? Что мешает так сделать?
C++
1
2
3
4
5
6
7
for (i = 0; i < 10; i++) {
    int j;
    for (j = 0; j < 10; j++) {
        if (что то) //выполнить continue для внешнего цикла ( сделать i+1 )
    }
    //продолжение внешнего цикла
}
0
cyber-satyr
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 03:14 8
nd2, а если по "j" мы вышли из внутреннего цикла, как мы узнаем во внешнем цикле что мы вышли именно по "j", а не по йети?

Добавлено через 58 секунд
Цитата Сообщение от nd2 Посмотреть сообщение
Что мешает так сделать?
Очевидно! Здравый смысл.

Добавлено через 1 минуту
Цитата Сообщение от nd2 Посмотреть сообщение
выполнить continue для внешнего цикла ( сделать i+1 )
В очередной раз убеждаюсь как не извращаются плюсисты дабы следовать своей религии.

Добавлено через 1 минуту
Да, чёрт! изменять внешнее окружение это варварство!
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 03:19 9
Чтобы совсем понятно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for (int i = 0; i < 10; i++) 
    {
        int j;
        for (j = 0; j < 10; j++) 
        {
            if (i == 5) //выполнить continue для внешнего цикла ( сделать i+1 )
                break;
        }
        if (j != 10)
            continue;
    //продолжение внешнего цикла
    }
1
_Ivana
4340 / 2007 / 254
Регистрация: 01.03.2013
Сообщений: 5,387
Записей в блоге: 22
26.09.2016, 03:31 10
Сильная тема
Цитата Сообщение от Pavel Rem Посмотреть сообщение
Вложенный цикл является проверкой, и если он проверку не проходит надо сделать continue для внешнего цикла, что б он не продолжал выполнять код прописанный после.
А рас так, то и надо обозначить в коте явно свои намерения, хотя бы ради самодокументированности и прозрачности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for (int i = 0; i < 10; i++) 
    {
        bool allRight = true;
        for (j = 0; j < 10; j++) 
        {
            if (i == 5) {//выполнить continue для внешнего цикла ( сделать i+1 )
                allRight = false;
                break;
                }
        }
        if (!allRight) continue;
    //продолжение внешнего цикла
    }
Все ясно-понятно, работает с любыми циклами (foreach, while true, for next и т.п.) и любым их количеством.

ЗЫ я думал, это в детсаду понятно...
1
cyber-satyr
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 03:32 11
Цитата Сообщение от nd2 Посмотреть сообщение
Чтобы совсем понятно
О чём я и говорил. Наговнокодить, но главное чтобы религиозно не написать заветные goto!
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 03:37 12
Цитата Сообщение от _Ivana Посмотреть сообщение
ради самодокументированности
Это - да.
Цитата Сообщение от _Ivana Посмотреть сообщение
я думал, это в детсаду понятно...
Это - нет.
0
Pavel Rem
11 / 11 / 2
Регистрация: 15.07.2016
Сообщений: 132
26.09.2016, 03:49  [ТС] 13
Преподаватель goto не любит)
Сделал так:
C++
1
2
3
4
5
6
7
for (i = 0 i < 10; i++, d = 0) {
    for (j = 0; j <10; b++) {
        if (A[i] == B[j]) { d = 1; break; }
    }
    if (d == 1) continue;
    //продолжение внешнего цикла
}
Спасибо
0
ValeryS
Модератор
8085 / 5966 / 791
Регистрация: 14.02.2011
Сообщений: 20,579
Завершенные тесты: 1
26.09.2016, 06:47 14
Pavel Rem,
у вас эпидемия что ли
Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Цитата Сообщение от dimitrykorno Посмотреть сообщение
Добрый вечер. Возможен ли в C++ переход на следующую итерацию внешнего цикла из вложенного?
например:
C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
 {
   for(int j=0;j<m;j++)
     if(...) continue;
    func();
   }
Цитата Сообщение от Pavel Rem Посмотреть сообщение
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример :

C++
1
2
3
4
5
6
for (i = 0; i < 10; i++) {
  for (j = 0; j < 10; j++) {
     if (что то) //выполнить continue для внешнего цикла ( сделать i+1 )
   }
   //продолжение внешнего цикла
}
Вложенный цикл является проверкой, и если он проверку не проходит надо сделать continue для внешнего цикла, что б он не продолжал выполнять код прописанный после.
даже пример похоже один

Добавлено через 6 минут
Цитата Сообщение от Pavel Rem Посмотреть сообщение
Преподаватель goto не любит)
Сделал так:
C++
1
2
3
4
5
6
7
for (i = 0 i < 10; i++, d = 0) {
   for (j = 0; j <10; b++) {
     if (A[i] == B[j]) { d = 1; break; }
    }
  if (d == 1) continue;
   //продолжение внешнего цикла
}

то же самое без выпендрежей
C++
1
2
3
4
5
 for (i = 0 i < 10; i++) {
   for (j = 0; j <10; j ++) {
     if (A[i] == B[j]) { i++;}
    }
}
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 07:02 15
Цитата Сообщение от ValeryS Посмотреть сообщение
то же самое без выпендрежей
Разве то же самое?
0
ValeryS
Модератор
8085 / 5966 / 791
Регистрация: 14.02.2011
Сообщений: 20,579
Завершенные тесты: 1
26.09.2016, 07:06 16
Цитата Сообщение от nd2 Посмотреть сообщение
Разве то же самое?
а чебы нет
в данном контексте то же самое
ну может еще break поставить
каков вопрос таков ответ
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 07:11 17
Цитата Сообщение от ValeryS Посмотреть сообщение
в данном контексте то же самое
Нет, у тебя код совсем про другое.
1
ValeryS
Модератор
8085 / 5966 / 791
Регистрация: 14.02.2011
Сообщений: 20,579
Завершенные тесты: 1
26.09.2016, 07:15 18
Цитата Сообщение от nd2 Посмотреть сообщение
у тебя код совсем про другое.
Ой ли
Цитата Сообщение от Pavel Rem Посмотреть сообщение
if (что то) //выполнить continue для внешнего цикла ( сделать i+1
Цитата Сообщение от ValeryS Посмотреть сообщение
if (A[i] == B[j]) { i++;}
что просили то и сделал
0
nd2
3177 / 2645 / 1162
Регистрация: 29.01.2016
Сообщений: 8,869
26.09.2016, 07:20 19
Цитата Сообщение от ValeryS Посмотреть сообщение
что просили то и сделал
Шуточки шутим? Там же и продолжение есть:
Цитата Сообщение от Pavel Rem Посмотреть сообщение
Вложенный цикл является проверкой, и если он проверку не проходит надо сделать continue для внешнего цикла, что б он не продолжал выполнять код прописанный после.
0
ValeryS
Модератор
8085 / 5966 / 791
Регистрация: 14.02.2011
Сообщений: 20,579
Завершенные тесты: 1
26.09.2016, 07:49 20
Цитата Сообщение от nd2 Посмотреть сообщение
Шуточки шутим?
ага
а если серьезно, то я ответил в другой теме(точно такой же)
Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
ужель ТС поиском не пользуется, я чем виноват

там есть резюме
Цитата Сообщение от ValeryS Посмотреть сообщение
но по правильному надо идеологию пересмотреть
0
26.09.2016, 07:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2016, 07:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как взять предпоследнюю итерацию цикла while?
Пишу задачу с циклом while, чтобы он работал пока точность &gt; 0.001: delta = 1 k = 0 while...

Как в C++ запустить текущую итерацию цикла заново
оператор continue переходит к следующей итерации , а мне нужно ещё раз эту же прогнать

Цикл do.while не идет на следующую итерацию
Товарищи форумчане. Появилась проблема. Делая задание по одному предмету, наткнулся на проблему с...

Как правильно вывести каждую итерацию цикла сортировки выбором
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;cstdlib&gt; #include&lt;ctime&gt; using namespace std;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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