Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
dimitrykorno
0 / 0 / 1
Регистрация: 16.04.2016
Сообщений: 50
1

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

21.09.2016, 18:08. Просмотров 6036. Ответов 13

Добрый вечер. Возможен ли в 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();
    }
Тут continue переведет внутренний цикл на следующую итерацию, а как сделать, чтобы перевести сразу на внешний?
(Суть в том, что во внутреннем цикле заложена проверка с проходом по массиву, если она будет верной, то нужно сразу перейти на следующую итерацию i, без выполнения func() )

Можно ли избежать некрасивых конструкций вроде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
p=0;
for(int i=0;i<n;i++)
   {
     for(int j=0;j<m;j++)
         if(...) p=1;
     
     if(p==1)
         {
          p=0;
          continue;
         }
     func();
   }
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2016, 18:08
Ответы с готовыми решениями:

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример : for (i = 0; i &lt; 10;...

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

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

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

13
nmcf
6570 / 5782 / 2634
Регистрация: 14.04.2014
Сообщений: 24,583
21.09.2016, 18:13 2
С помощью goto можно. В конец внешнего цикла.
0
dimitrykorno
0 / 0 / 1
Регистрация: 16.04.2016
Сообщений: 50
21.09.2016, 18:17  [ТС] 3
нам запрещают использовать goto
0
nmcf
6570 / 5782 / 2634
Регистрация: 14.04.2014
Сообщений: 24,583
21.09.2016, 18:18 4
Кто запрещает?
Ну тогда делай как во втором примере.
0
hoggy
Эксперт С++
7822 / 3559 / 752
Регистрация: 15.11.2014
Сообщений: 8,122
Завершенные тесты: 1
21.09.2016, 20:33 5
Цитата Сообщение от dimitrykorno Посмотреть сообщение
Тут continue переведет внутренний цикл на следующую итерацию, а как сделать, чтобы перевести сразу на внешний?
C++
1
2
3
4
5
for(int i=0;i<n;++i)
  if(trololo())
     continue;
  else
    func();
1
dimitrykorno
0 / 0 / 1
Регистрация: 16.04.2016
Сообщений: 50
21.09.2016, 20:35  [ТС] 6
проверка if должна быть еще в одном цикле. я ведь не могу его засунуть в условие.
0
rikimaru2013
2527 / 1187 / 357
Регистрация: 30.11.2013
Сообщений: 3,817
21.09.2016, 20:38 7
Цитата Сообщение от nmcf Посмотреть сообщение
С помощью goto можно.
А как часто вы им пользуетесь?
0
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
21.09.2016, 20:41 8
Цитата Сообщение от dimitrykorno Посмотреть сообщение
C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)
        if(...) continue;
    func();
}
C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)
        if(...) break;
    func();
}
?
0
Max Dark
шКодер самоучка
2073 / 1821 / 887
Регистрация: 09.10.2013
Сообщений: 3,964
Записей в блоге: 7
Завершенные тесты: 2
21.09.2016, 20:42 9
dimitrykorno, как вариант - вынести внутренний цикл в отдельную функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool internal(....) {
    for(...) {
        if (...)
            return true;
    }
    return false;
}
 
void external(....) {
    for(...) {
        if(internal(...))
            continue;
    }
}
1
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
21.09.2016, 20:43 10
Цитата Сообщение от dimitrykorno Посмотреть сообщение
я ведь не могу его засунуть в условие.
плохо пробуешь )
0
dimitrykorno
0 / 0 / 1
Регистрация: 16.04.2016
Сообщений: 50
21.09.2016, 20:43  [ТС] 11
break выведет меня из внутреннего цикла, и тогда будет выполнятся func().
0
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
21.09.2016, 20:44 12
Цитата Сообщение от Max Dark Посмотреть сообщение
вынести внутренний цикл в отдельную функцию
об этом hoggy и сказал выше

Добавлено через 40 секунд
Цитата Сообщение от dimitrykorno Посмотреть сообщение
break выведет меня из внутреннего цикла, и тогда будет выполнятся func().
C++
1
bool flag;
0
nmcf
21.09.2016, 20:49
  #13

Не по теме:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А как часто вы им пользуетесь?
Я - очень редко. Но если он хочет такой переход...

0
ValeryS
Модератор
8087 / 5969 / 791
Регистрация: 14.02.2011
Сообщений: 20,587
Завершенные тесты: 1
21.09.2016, 22:58 14
Лучший ответ Сообщение было отмечено dimitrykorno как решение

Решение

Цитата Сообщение от dimitrykorno Посмотреть сообщение
C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
{
  for(int j=0;j<m;j++)
     if(...) continue;
   func();
 }

как вариант
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n;i++)
{
  int j;
  for( j=0;j<m;j++)
       if(...) break;
  if(j==m)
        func();
}
но по правильному надо идеологию пересмотреть
1
21.09.2016, 22:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2016, 22:58

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

Как взять предпоследнюю итерацию цикла 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;...


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

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

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