944,098 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 13010
  • C++ RSS
You are currently viewing page 1 of this multi-page discussion thread
Nov 11th, 2005
0

How do you Terminate an Infinite Loop? Impossible!!!

Expand Post »
Help me here guys! I try building an infinite loop but don't know how to terminate it.

//Description:
//This program asks the user to terminate an infinite loop
//with a sentinel value of any kind.

//This is a regular infinite loop.
//This would just run infinitely with no end.
//I've tried many ways to terminate it but I can
//never get pass the errors.
//I've used the break statement and still give me errors.
//Help me. I think it's impossible to break an infinite loop.


# include <iostream>

using namespace std;

int main (void){

int test = 0;
while (test < 10)
cout<<"Hello \n";

return 0;
}




// Here is the one that I've tried and it works.
//It will terminate the loop but it's NOT an Auto Infinite Loop like the one above.
//Description:
//This program asks the user to terminate an infinite loop
//with a sentinel value of any kind.




# include <iostream>
# include <cmath>

using namespace std;

int main(void){

int test = 0;
char stop;


while (test++ < 10){
cout<<"Hello \n";
cin>>stop;
if (stop == 'q') //Pressing (sentinel value) q on the keyword will terminate the program.
break;
}
cout<<"Program has been terminated! \n";

return 0;

}

//help guys, i think it's impossible to end an infinite loop
//that keeps running automatically until someone press
//a sentinel value to terminate it.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dj_money is offline Offline
5 posts
since Nov 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

C++ Syntax (Toggle Plain Text)
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int stop = 0;
  8.  
  9. while (true)
  10. {
  11. stop++;
  12.  
  13. cout<<"Hello!\n";
  14.  
  15. if(stop == 5) break;
  16. }
  17.  
  18. return 0;
  19. }

OR

C++ Syntax (Toggle Plain Text)
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int i = 0;
  8.  
  9. for(;;)
  10. {
  11. i++;
  12. cout<<"Hello!\n";
  13.  
  14. if (i == 5) break;
  15. }
  16.  
  17. return 0;
  18. }

Hope this helps

One other thing, when posting code use code tags like this:

[ code ]code in here [ /code ] but without the space between the square brackets :!:
Reputation Points: 51
Solved Threads: 4
Posting Pro in Training
JoBe is offline Offline
420 posts
since Sep 2004
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Thanks for the advice. How you got your program running was for an infinite loop to run and end automatically by itself. Well, what I meant that was hard to do was "How to manually end an auto-infinite loop." I think it's just impossible. But i may be proven wrong.
//help guys, i think it's impossible to end an infinite loop
//that keeps running automatically until someone press
//a sentinel value to terminate it.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dj_money is offline Offline
5 posts
since Nov 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Hmm, well, the only way I can think of is this way:

C++ Syntax (Toggle Plain Text)
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. char ch = 'j';
  8.  
  9. for (;;)
  10. {
  11. cout<<"Hello!\n";
  12.  
  13. cin>> ch;
  14.  
  15. if(ch == 'Q') break;
  16. }
  17.  
  18. return 0;
  19. }
Reputation Points: 51
Solved Threads: 4
Posting Pro in Training
JoBe is offline Offline
420 posts
since Sep 2004
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

The way you have yours is the same like my second one.
Your code is about pressing a key from the keyboard to get "Hello" to continue infinitely until we key in the sentinnel value to interrupt it.
Well, what's hard to do was to not press anything from the key and just let cout<< "Hello" To Loop infinitely by itself UNTIL a sentinnel value is given from the keyboard and that will be the only time to press a key.

An Example of the Program Output:

Hello
Hello
Hello
Hello
Hello
"etc..." it would say Hello infinitely without pressing any key.
until a sentinel value or sentinel key is punched from the keyboard to Interrupt the
infinite looping program.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dj_money is offline Offline
5 posts
since Nov 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Using cin >> will pause the program until input occurs. My suggestion would be to consider using kbhit() from the non-standard conio.h file (not all compilers have this file). Sprinkle calls to kbhit() before or after any critical sections and if you want to quit only if a keystroke was made and it was a specific, then make the conditional compound. To my knowledge, which is far from all encompassing, there is no standard way to do this, though. I'll be happy to hear otherwise.
Reputation Points: 718
Solved Threads: 373
Nearly a Posting Maven
Lerner is offline Offline
2,253 posts
since Jul 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Quote originally posted by Lerner ...
Using cin >> will pause the program until input occurs. My suggestion would be to consider using kbhit() from the non-standard conio.h file (not all compilers have this file). Sprinkle calls to kbhit() before or after any critical sections and if you want to quit only if a keystroke was made and it was a specific, then make the conditional compound. To my knowledge, which is far from all encompassing, there is no standard way to do this, though. I'll be happy to hear otherwise.
Thanks Lerner,
I've figured there would be no standard way to do this. Thanks for the advice. I'll try conio.h but I doubt that I would have it in my compiler. I'll try looking.

Thanks again guys.
If there are still other solutions. I'm glad to hear from it. would be very helpful.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dj_money is offline Offline
5 posts
since Nov 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Guys,
There's a much better way to do this.

C++ Syntax (Toggle Plain Text)
  1. #include <signal.h>
  2. #include <iostream>
  3. using namespace std;
  4. void catch_signal(int sig_num);
  5. void catch_signal(int sig_num)
  6. {
  7. cout<<"HEY! somebody cancelled me..."<<endl;
  8. exit( 1 );
  9. }
  10. int main( int argc, char * argv[] )
  11. {
  12. signal(SIGINT, catch_signal);
  13. while ( true )
  14. {
  15. cout<<"BLAH"<<endl;
  16. }
  17. return 0;
  18. }

BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
BLAH
^CBLAH
BLAH
HEY! somebody cancelled me...
Reputation Points: 68
Solved Threads: 18
Posting Pro in Training
winbatch is offline Offline
466 posts
since Feb 2005
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Where in your code do you specify that the signal thingy is looking for Ctrl+C?
Administrator
Staff Writer
Reputation Points: 1422
Solved Threads: 163
The Queen of DaniWeb
cscgal is offline Offline
13,646 posts
since Feb 2002
Nov 11th, 2005
0

Re: How do you Terminate an Infinite Loop? Impossible!!!

Quote originally posted by winbatch ...
void catch_signal(int sig_num)
{
	cout<<"HEY! somebody cancelled me..."<<endl;
	exit( 1 );
}
You shouldn't be putting standard output stuff in a signal handler. Search also for sig_atomic_t.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: C++ Build Errors
Next Thread in C++ Forum Timeline: save an image into a file using c++





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC