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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2013, 15:59   #1
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
Радость Цикл

Всем привет!
Появилась такая проблема, есть 2 цикла while
Код:
while (x>0)
{
}

while (x<0)
{
}
Ну с ними все понятно, выполняется либо один либо другой, но есть еще третий while он бесконечный и должен выполнятся на протяжении всей программы, независимо от того, какой из предыдущих циклов выполняется, как это записать? Ведь если я сделаю его перед циклами или внутри них, то их выполнение прервется, так как третий цикл бесконечный!
truniger2011 вне форума Ответить с цитированием
Старый 07.02.2013, 16:14   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Ну с ними все понятно, выполняется либо один либо другой, но есть еще третий while он бесконечный и должен выполнятся на протяжении всей программы, независимо от того, какой из предыдущих циклов выполняется, как это записать?
Моя твоя понимай совсем нет.
1) При x=0 ложны условия обоих циклов.
2) При x>0 в начале указанного фрагмента будет выполняться первый цикл, до тех пор, пока x не станет меньше либо равно нуля, либо не будет применена команда перехода, вроде break. Затем, если управление попадает на начало второго цикла, второй цикл выполняется до тех пор, пока x<0 (в моменты проверки условия цикла).
3) Если после выхода из второго цикла Вам надо вернуться к началу первого, оберните весь фрагмент кода в while(true){}.
Abstraction вне форума Ответить с цитированием
Старый 07.02.2013, 16:19   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Если правильно понял или нужно, чтобы внешний цикл работал независимо от остальных двух? В данном случае сначала будет внешний цикл - потом два внутренних и так сначала.
Код:
while (true)
{
   ...
   while (x > 0)
   {
        ...
    }
   while (x < 0)
   {
       ...
   }
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 07.02.2013, 16:43   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

может тогда сделать так?

Код:
while (true)
{if (x>0) //выполнить вернуться к началу цикла и снова выполнить пока x>0
  { 
     ....
  }
  if (x<0) //выполнить вернуться к началу цикла и снова выполнить пока x<0
  {
    ... 
  }
}
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.02.2013, 17:24   #5
iDima
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 19
По умолчанию

Можно сделать так как сказал Abstraction:

Код:
while (true)
{
   ...
   while (x > 0)
   {
        ...
    }
   while (x < 0)
   {
       ...
   }
}
Это вполне рабочий пример.
iDima вне форума Ответить с цитированием
Старый 07.02.2013, 20:04   #6
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от iDima Посмотреть сообщение
Можно сделать так как сказал Abstraction:

Код:
while (true)
{
   ...
   while (x > 0)
   {
        ...
    }
   while (x < 0)
   {
       ...
   }
}
Это вполне рабочий пример.
Этот вариант мне не совсем подходит, мне нужны 2 цикла которые будут выполнятся абсолютно независимо друг от друга. Я пишу простую 2д игру, где нужно собирать мусор, 1 цикл отвечает за движение соответственно нажатой клавише, а второй должен показывать на карте сам мусор, который нужно собирать. Так вот мусор в этом цикле должен появятся не сразу, а через некоторое время. Для этого я использую оператор Sleep(), но проблема в том, что он тормозит не только появление мусора но и движение, а мне нужно чтоб он работал только в одном цикле, а другой в это же время выполнялся, может нужно использовать какой то другой оператор вместо слипа?

PC: извините за такое мутное объяснение, объяснил как смог

Последний раз редактировалось truniger2011; 07.02.2013 в 20:10.
truniger2011 вне форума Ответить с цитированием
Старый 07.02.2013, 20:25   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

можно просто засекать время, и смотреть: если прошло уже 3 секунды - делаем, не прошло - не делаем.
_Bers вне форума Ответить с цитированием
Старый 07.02.2013, 20:50   #8
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
можно просто засекать время, и смотреть: если прошло уже 3 секунды - делаем, не прошло - не делаем.
А как это сделать?
truniger2011 вне форума Ответить с цитированием
Старый 07.02.2013, 20:59   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Этот вариант мне не совсем подходит, мне нужны 2 цикла которые будут выполнятся абсолютно независимо друг от друга.
раскидай их по разным потокам

ЗЫ. в 11 плюсиках появилась нативная поддержка потоков
rrrFer вне форума Ответить с цитированием
Старый 07.02.2013, 21:09   #10
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
раскидай их по разным потокам

ЗЫ. в 11 плюсиках появилась нативная поддержка потоков
опять же, как это сделать? покажите на примере пожайлуста
truniger2011 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл If Then Loadgame Помощь студентам 2 28.10.2011 23:31
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34