Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> глобальные метки 
V
    Опции темы
Curiosa
  Дата 13.1.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Есть ли такие, как их объявлять?
PM MAIL   Вверх
zim22
Дата 13.1.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



а локальные метки есть?


--------------------
PM MAIL   Вверх
GoldFinch
Дата 13.1.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



глобальных нету - только внутри функции

используй пустую функцию как глобальную метку ;)
(с умом используй)
PM MAIL ICQ   Вверх
Curiosa
Дата 13.1.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Если я использую функцию, то после "пророботки" она вернется в точку вызова, а мне нужно в main ;)
PM MAIL   Вверх
djamshud
Дата 14.1.2010, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Curiosa, после проработки кидайте особое исключение и ловите его в main. Но вообще странное желение какое-то).

Еще есть сишный longjmp:
http://www.opennet.ru/man.shtml?topic=long...DA%C1%D4%D8+man
Вот только в одних источниках говорится, что он соответствует аж стандарту C89, а в других - только POSIX. Кому верить, не знаю.

Добавлено через 2 минуты и 4 секунды
Так же у longjmp под большим вопросом (в случае использования с++), нормально ли переживут такой скачок многие из объектов.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Alek86
Дата 14.1.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



если очень надо, для этого можно использовать исключения

но уверен, что ты просто неправильно решаешь задачу


--------------------
user posted image    user posted image
PM MAIL   Вверх
baldina
Дата 14.1.2010, 12:00 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Curiosa, глобальных меток нет и тому есть несколько причин:
1. Переход на адрес внутри другой функции не является корректным, т.к. стек отражает состояние текущей функции. в стеке адреса возвратов и локальные переменные. 
2. В языке имеется достаточно других средств управления ходом программы.
3. Желание прыгнуть за пределы функции чаще всего говорит о неправильном проектировании алгоритма и вносит в проект лишние сильные связи. Иными словами, немного подумав и изменив алгоритм, получим более простую, ясную и логичную программу.

Есть, как уже сказали, два способа изменить ход программы, передав управление в иную функцию - setjmp\longjmp и исключения.
Первое вполне справляется с установкой указателя стека, но объекты при этом не разрушаются корректным образом. Второе (исключения) аккуратно вызывает деструкторы всех локальных объектов, хранящихся в стеке.

Так что технически возможно, практически - скорее всего неправильно. Задачу в студию, подумаем, подскажем.
PM MAIL   Вверх
Curiosa
Дата 15.1.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Задача: поиск в глубину. Проблема возникла из-за рекурсии. Т.е там где управление должно было переходить в main, осуществлялось углубление. Сделала так: поставила флаг на выход) Спасибо за ответыsmile
PM MAIL   Вверх
baldina
Дата 15.1.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Код

// поиск в глубину на связном ациклическом (для простоты иллюстрации) графе - дереве
template <typename Tree,  typename Key>
bool depth_search (Tree* g, Key key)
{
   if (g->value == key) // проверяем текущий узел
     return true;

   for (int i=0; i < g->num_childs(); ++i) // цикл для всех поддеревьев
      if (depth_search (g->child[i], key)) // рекурсивный поиск в i-м поддереве
         return true;

  return false;
}


Что-то в этом роде. Метки не нужны.

Это сообщение отредактировал(а) baldina - 16.1.2010, 00:01
PM MAIL   Вверх
Curiosa
  Дата 15.1.2010, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Цитата(baldina @  15.1.2010,  18:14 Найти цитируемый пост)
поиск в глубину на ациклическом (для простоты иллюстрации) графе

Я именно циклы искала ;]
PM MAIL   Вверх
baldina
Дата 15.1.2010, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



с циклами Вам потребуется помечать вершины - пройдена или нет.
посмотрите http://ru.wikipedia.org/wiki/Поиск_в_глубину
здесь алгоритм в общем виде, с рекурсией и без меток
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1016 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.