Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Zazy
45 / 45 / 23
Регистрация: 14.04.2013
Сообщений: 186
1

Выход из вложенного цикла

22.03.2014, 23:47. Просмотров 1115. Ответов 9
Метки нет (Все метки)

Собственно как выходить из вложенного цикла ? goto ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 23:47
Ответы с готовыми решениями:

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

Объясните работу вложенного цикла
Привет всем,подскажите пожалуйста как работает данный цикл,я понимаю,что можно...

Не выполняется условие вложенного цикла
Отладчик показывает что не выполняется условие цикла по j. В чем косяк? /*...

Прервать цикл из цикла, вложенного в него
Приветствуют. Собственно, вопрос в названии темы. for(int i = 1; i <= 10; i++)...

Составить и отладить программу с использованием вложенного цикла
На предприятии выработка продукции за одну неделю месяца составляла n единиц....

9
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
22.03.2014, 23:52 2
Можно завести логическую переменную - признак выхода.
При выходе из внутреннего цикла ее устанавливать в true.
Во внешнем цикле проверять эту переменную и, если она true,
то выходить из этого цикла тоже.
2
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
22.03.2014, 23:54 3
Цитата Сообщение от Zazy Посмотреть сообщение
Собственно как выходить из вложенного цикла ? goto ?
Собственно, это один из не многих случает, когда стоит использовать goto
1
Croessmah
++Ͻ
14616 / 8368 / 1578
Регистрация: 27.09.2012
Сообщений: 20,563
Записей в блоге: 2
Завершенные тесты: 1
23.03.2014, 00:13 4
можно обернуть циклы в функцию и когда нужен выход из циклов - просто выходим из функции
0
Убежденный
Ушел с форума
Эксперт С++
15998 / 7269 / 1180
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
23.03.2014, 00:28 5
Добавлю-ка маслица в огонь - throw !
Не настаиваю, просто как один из вариантов...
0
Croessmah
++Ͻ
14616 / 8368 / 1578
Регистрация: 27.09.2012
Сообщений: 20,563
Записей в блоге: 2
Завершенные тесты: 1
23.03.2014, 00:33 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Добавлю-ка маслица в огонь - throw !
тогда я еще усугублю и предложу совсем ересь - longjmp !
2
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
23.03.2014, 09:49 7
Цитата Сообщение от Croessmah Посмотреть сообщение
предложу совсем ересь - longjmp
Интересная штука, оказывается.
Нашел пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <setjmp.h>
#include <stdio.h>
#include <conio.h>
jmp_buf ebuf;
void f2(void)
{
  printf("inside f2\n");
  longjmp(ebuf, 4);
}
int main(void)
{
  int i;
 
  printf("1\n");
  i = setjmp(ebuf);
  if(i == 0) 
  {
    f2();
    printf("Это не будет напечатано.");
  }
  printf("i=%d", i);
  getch();
  return 0;
}
Происходит следующее:
1. i = setjmp(ebuf); - запоминается это место и i присваивается ноль
2. Поскольку i равно нулю, то вызывается функция f2
3. Внутри f2 вызывается longjmp(ebuf, 4)
4. В результате переменной i присваивается значение 4 и управление передается
на оператор, который стоит после i = setjmp(ebuf);
5. Поскольку i не равно 0, то оператор if не сработает и далее
будет выполняться оператор printf("i=%d", i);
0
Croessmah
++Ͻ
14616 / 8368 / 1578
Регистрация: 27.09.2012
Сообщений: 20,563
Записей в блоге: 2
Завершенные тесты: 1
23.03.2014, 10:04 8
Цитата Сообщение от zss Посмотреть сообщение
Интересная штука, оказывается.
только бесполезная в плюсах, по сути и опаааасная

Функция Си-шная и она ничего не знает, например, о деструкторах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <setjmp.h>
#include <stdio.h>
jmp_buf ebuf;
 
 
struct A {
   A(){printf("A()\n");}
   ~A(){printf("~A()\n");}
} ;
 
 
 
void f2(void)
{
   A a;
  printf("inside f2\n");
  longjmp(ebuf, 4);
}
int main(void)
{
  int i;
 
  printf("1\n");
  i = setjmp(ebuf);
  if(i == 0)
  {
    f2();
    printf("Это не будет напечатано.");
  }
  printf("i=%d", i);
}
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
23.03.2014, 11:56 9
Цитата Сообщение от Croessmah Посмотреть сообщение
ничего не знает, например, о деструкторах:
Ну, не скажите!!!
0
Миниатюры
Выход из вложенного цикла  
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
23.03.2014, 12:08 10
Croessmah, zss, UB же.
0
23.03.2014, 12:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 12:08

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

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример :...

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


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

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

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