Есть бесконечный цикл. Как сделать так, чтобы программа завершила выполнение этой функции и перешла на другую(при нажатии клавиши).
void f1(){
for (int j = 0; j>-1; j++){
...код цикла...
}
}
main(){
f1();
f2();
надо чтобы при нажатии клавиши прекратило выполнятся f1 и начало выполнятся f2. При этом надо, чтобы в работе цикла остановок и пауз небыло.
Другие языки программирования и технологии
Выход из бесконечного цикла С++
Данный цикл не является бесконечным! Через 2^32-1 итераций он завершится!
Бесконечный цикл можно записать, например, так (выход по нажатию ENTER)
for(;;)
{
c=getch();
if(c==13) break;
}
Бесконечный цикл можно записать, например, так (выход по нажатию ENTER)
for(;;)
{
c=getch();
if(c==13) break;
}
Есть такой оператор break называется. Служит для прерывания любых циклов.
ответ напишу за еду ))) да и код тоже
у тебя этот код работает? просто запускать j++ если j int это не до конца надёжно.. . по вопросу:
чтобы выйти из функции можно использовать exit или return соответственно для delphi и c++, чтобы проверить условие в цикле который ты написал нужно собственно в нём добавить проверку этого условия (нужно добавить какую нибудь логическую переменную признак) , но тут возникает проблема -кто изменит значение признака - можно конечно запустить поток отдельный и в нём по какой то логике изменить значение признака, а проще на обработчик от какой нибудь кнопки повесить изменение признака и в цикл добавить Application->processmessages чтобы принудительно считать сообщения из очереди.. . т. к. если не делать этого принудительно то клик по кнопке не отработается пока не завершится цикл а у тебя это вообще никогда не произойдёт.. . вот пример на делфях... .
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
abort:=true;
end;
//////
while(i<=StrToInt(Edit2.Text))do - у меня цикл не бесконечный но долгий довольно
try
Caption:='Текущий - '+IntToStr(i)+'; Найдено - '+IntToStr(counter)+';';
application.ProcessMessages;
if abort then
exit;
except
end;
/////
break наверное тоже может проканать...
чтобы выйти из функции можно использовать exit или return соответственно для delphi и c++, чтобы проверить условие в цикле который ты написал нужно собственно в нём добавить проверку этого условия (нужно добавить какую нибудь логическую переменную признак) , но тут возникает проблема -кто изменит значение признака - можно конечно запустить поток отдельный и в нём по какой то логике изменить значение признака, а проще на обработчик от какой нибудь кнопки повесить изменение признака и в цикл добавить Application->processmessages чтобы принудительно считать сообщения из очереди.. . т. к. если не делать этого принудительно то клик по кнопке не отработается пока не завершится цикл а у тебя это вообще никогда не произойдёт.. . вот пример на делфях... .
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
abort:=true;
end;
//////
while(i<=StrToInt(Edit2.Text))do - у меня цикл не бесконечный но долгий довольно
try
Caption:='Текущий - '+IntToStr(i)+'; Найдено - '+IntToStr(counter)+';';
application.ProcessMessages;
if abort then
exit;
except
end;
/////
break наверное тоже может проканать...
20руб yandex напишу)
еще проще для тебя сделать так : для каждой кнопки создать событие и уже в событии кнопок прописать нужные функции.
Похожие вопросы
- Delphi!? Repeat Unitl... бесконечный цикл (вся прога зависает)?
- Хорошо ли использовать бесконечный цикл for в C++?
- Каким образом зациклить програму? суть бесконечного цикла?
- Возможно ли выполнить действие 1 раз внутри функции, вызываемой в бесконечном цикле, с помощью её аргумента?
- Объясните тему Циклы, а пальцах? C++
- Цикл for в Дельфи или Паскале
- t-sql (курсоры и циклы - взаимозаменяемы?)
- Вопрос про цикл For
- Какой оператор в Си позволяет досрочно завершить ВСЕ циклы (например если цикл в цикле) или как это вообще можно сделать
- Вопрос по трассировке цикла со вложенностью. C++