@s2sk

Остановить два цикла в цикле?

Допустим есть такой код

for(int a = 0; ....... )
{
    for(int b = 0; ....)
    {
        for(int c = 0; .........)
        {
            if(c == 5)
                break;
        }
    }
}


Мне нужно если c == 5 в третьем цикле, то остановить цикл "c" и "b", но чтобы "a" продолжился. Если использовать break; то останавливается только "c". Два раза написать break ? Тестить что-то лень...
  • Вопрос задан
  • 1127 просмотров
Пригласить эксперта
Ответы на вопрос 3
@LexArd
Для такого и существует goto
for (int a= 0; ....) {
for (int b = 0; ....) {
for (int c = 0; ....) {
if (c == 5)
goto label;
}
}
label:;
}
поидее заработает, не проверял)
Ответ написан
hydra_13
@hydra_13
Пограммист - любитель)
1) Возможно стоит пересмотреть архитектуру, т.к. данная вложенность циклов не лучшее решение. Возможно есть что-то получше.
2) использовать переменные-флаги состояния в условиях циклов
bool fl = true;
for (int a =0; a < 10 && fl; a++){
    for (int b =0; b < 10 && fl; b++){
        for (int c =0; c < 10 && fl; c++){
            if (c==5){
                fl = false;
                break;
            }
        }
    }
}

3) использовать goto, но это в большинстве случаев тоже не очень хорошее решение
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Оберните циклы во вспомогательную функцию
#include <iostream>
using namespace std;

void helper(){
	
for(int a = 0; a < 10; ++a )
{
    for(int b = 0; b < 10; ++b )
    {
        for(int c = 0; с < 10; ++с )
        {
            if(c == 5)
                return;
        }
    }
}

}

int main() {
	
helper();
return 0;

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы