11 / 11 / 2
Регистрация: 15.07.2016
Сообщений: 132
1

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

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

Author24 — интернет-сервис помощи студентам
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример :
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2016, 01:53
Ответы с готовыми решениями:

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

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

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

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

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

Решение

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

Решение

Цитата Сообщение от cyber-satyr Посмотреть сообщение
1. goto;
2. вынести внутренний цикл в метод или функцию.
3. Внешний флаг;
4. break из внутреннего, проверка выхода из внутреннего: по условию цикла или по break.
0
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
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.09.2016, 03:03 5
Цитата Сообщение от cyber-satyr Посмотреть сообщение
Ну а перед break из внутреннего установим флаг, чтобы потом понять вышли мы по break'у или нет. Ага.
Флаг тут необязателен, достаточно проверить значение j.

Добавлено через 1 минуту
cyber-satyr, ты не врубаешься? Да?
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 03:08 6
Цитата Сообщение от nd2 Посмотреть сообщение
Флаг тут необязателен, достаточно проверить значение j.
Самуил, как ты проверишь "значение j" во внешнем цикле когда во внешнем цикле никакого "j" нету?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
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
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
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
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
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
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
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
26.09.2016, 03:32 11
Цитата Сообщение от nd2 Посмотреть сообщение
Чтобы совсем понятно
О чём я и говорил. Наговнокодить, но главное чтобы религиозно не написать заветные goto!
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.09.2016, 03:37 12
Цитата Сообщение от _Ivana Посмотреть сообщение
ради самодокументированности
Это - да.
Цитата Сообщение от _Ivana Посмотреть сообщение
я думал, это в детсаду понятно...
Это - нет.
0
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
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
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
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.09.2016, 07:02 15
Цитата Сообщение от ValeryS Посмотреть сообщение
то же самое без выпендрежей
Разве то же самое?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
26.09.2016, 07:06 16
Цитата Сообщение от nd2 Посмотреть сообщение
Разве то же самое?
а чебы нет
в данном контексте то же самое
ну может еще break поставить
каков вопрос таков ответ
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.09.2016, 07:11 17
Цитата Сообщение от ValeryS Посмотреть сообщение
в данном контексте то же самое
Нет, у тебя код совсем про другое.
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
26.09.2016, 07:15 18
Цитата Сообщение от nd2 Посмотреть сообщение
у тебя код совсем про другое.
Ой ли
Цитата Сообщение от Pavel Rem Посмотреть сообщение
if (что то) //выполнить continue для внешнего цикла ( сделать i+1
Цитата Сообщение от ValeryS Посмотреть сообщение
if (A[i] == B[j]) { i++;}
что просили то и сделал
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.09.2016, 07:20 19
Цитата Сообщение от ValeryS Посмотреть сообщение
что просили то и сделал
Шуточки шутим? Там же и продолжение есть:
Цитата Сообщение от Pavel Rem Посмотреть сообщение
Вложенный цикл является проверкой, и если он проверку не проходит надо сделать continue для внешнего цикла, что б он не продолжал выполнять код прописанный после.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
26.09.2016, 07:49 20
Цитата Сообщение от nd2 Посмотреть сообщение
Шуточки шутим?
ага
а если серьезно, то я ответил в другой теме(точно такой же)
Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
ужель ТС поиском не пользуется, я чем виноват

там есть резюме
Цитата Сообщение от ValeryS Посмотреть сообщение
но по правильному надо идеологию пересмотреть
0
26.09.2016, 07:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
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;...

Почему для перехода на следующую итерацию надо нажимать enter?
Почему в консоли переход на новую итерацию цикла надо жать интер? Как сделать, чтобы после запуска...

Как обойтись без вложенного цикла?
Нужно в данном конкретном случае перебрать, например, все возможные комбинации символов цепочки из...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru