Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 00:25   #1
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию Переход от цикла к циклу не выходя из цикла (без multithreading)

Здравствуйте.

Подозреваю, что название темы немного странное и не совсем подходящее. Дело вот в чём, есть функция в которой куча циклов For() {} Хочется сделать так, чтобы пользователь мог нормально продолжать работать в другой функции не выходя из первой. Начнём по порядку:
№1 Я знаю, что этого эффекта можно добится используя multhithreading но насколько мне известно, это жутко сложно и мне свой нос совать туда рано.
№2 Я знаю, что теоретический можно в каждом For цикле сделать переход на нужную мне функцию, но получается очень уж некрасиво и явно существует лучше способ.
№3 В моём коде присутствует Sleep() в циклах For, на это можете не обращать внимания, я его с легкостью заменю на таймер.

Вот код, советую запустить, чтобы примерно понять о чём речь.
http://pastie.org/479501

Как видите, мне хочется, чтобы пользователь мог выполнять некую функцию пока работает функция Creatures();
Я отчётливо понимаю, что:
Код:
for( ; y!=-1 ; y--) {
PlaceCursor(x, y);
cout << ("O\b"); 
MyFunc();
Sleep( 500 ); //Это заменю на таймер
cout << (" \b");
Так можно сделать, но получается корявисто и некрасиво.

Помню, в другом языке использовал CallBack ф-ии с помощью АдЛибов, наверняка тут также можно сделать, но я не знаю как
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума Ответить с цитированием
Старый 16.05.2009, 04:58   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Код:
Помню, в другом языке использовал CallBack ф-ии
А что вам мешает их использовоть в С++. http://ru.wikipedia.org/wiki/Callbac...граммирование) или google уже неработает?
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 16.05.2009, 09:27   #3
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
Код:
Помню, в другом языке использовал CallBack ф-ии
А что вам мешает их использовоть в С++. http://ru.wikipedia.org/wiki/Callbac...граммирование) или google уже неработает?
Ну, допустим я знаю как использовать Callback ф-ию, это всё равно не решит вопрос с циклами.... Если весь код расписать вне цикла for() {}
то тогда всё просто, но это глупо.... А мне ведь нужно, чтобы цикл for() {} прерывался после одного шага, да ещё и прервалась функция, потом запустился main(), а потом опять запустилась первая ф-ия в которой уже со второго шага начинается for() {}....

Думаю мне придётся переделать всю ф-ию Creatures() и заменить её на class, чёрт его знает, что из этого получится...



#Edit:
Вот, до чего я додумался:

Код:
{  
  diff = ( clock() - start ) / (double)CLOCKS_PER_SEC;

  if(diff <= 3 && (diff - difference > 0.1)) {

	  if(i>0) {
cout << (" \b"); 
i = 0;
}

PlaceCursor(x, y++);
cout << ("O\b");
i++;
difference = difference+0.5;
  }
}
Работает так, как мне надо и всё вроде замечательно... Вот только код уж очень большой получается и часто повторяется. Если кто-нибудь знает лучше способ как это реализовать, я Вас слушаю =P
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.

Последний раз редактировалось Qousio; 16.05.2009 в 12:47.
Qousio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью рекурсии без операторов цикла и перехода написать процедуру P(N) WhyBeNormal Помощь студентам 1 29.01.2009 01:20
Создание цикла. lexusus Общие вопросы C/C++ 6 27.05.2008 17:38
Выход из цикла RIO Помощь студентам 1 21.04.2008 22:55
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10
счётчик цикла Kivin13 Общие вопросы Delphi 3 11.09.2007 12:57