cstudent
asked on
Help in excuting loops.
I am presently learning the (for, while and do while) loops. My problem is my program stays in a continuous
loop and I have to shut down the computer to restart. I am new at this, so please be patient. I have this program
to write, representing the letters (A thru Z) and (a thru z) to coresspond to the digits (2 thru 9) on the telephone. Yes, I was here earlier with the same question, only using the ( if and if else) and I did get it to work.
Now my code starts:
#include <stdio.h>
main()
{
char ch=' ' ;
printf("Enter a single letter, and I will tell you what the corresponding digit is on the telephone \
(Period to stop). ");
flushall();
ch=getchar();
while(ch>='A' && ch<='C' || ch>='a' && ch<='c')
printf("\nThe digit 2 correspondes to the letter %c on the telephone.", ch);
while(ch>='D' && ch<='F' || ch>='d' && ch<='f')
printf("\nThe digit 3 correspondes to the letter %c on the telephone.", ch);
ETC. ETC. ETC.
Then a statement to show any invalid characters that are entered, such as,
while(ch<'A' && ch>' / ' || ch<' ' ' && ch>'z')
printf(\nThe entry %c is invalid.",ch);
while(ch !=' . ')
printf("\nStopped.",ch);
}
Can you please help? I can't get the program to print the users input and loop back to ask for the users input
again. All I get is a continous loop of the first input. Also, will any digits entered ( 0 thru 9) show up in the printf as invalid characters since I am using ch? Thanks for any help you can provide. Dan (Beginner)
loop and I have to shut down the computer to restart. I am new at this, so please be patient. I have this program
to write, representing the letters (A thru Z) and (a thru z) to coresspond to the digits (2 thru 9) on the telephone. Yes, I was here earlier with the same question, only using the ( if and if else) and I did get it to work.
Now my code starts:
#include <stdio.h>
main()
{
char ch=' ' ;
printf("Enter a single letter, and I will tell you what the corresponding digit is on the telephone \
(Period to stop). ");
flushall();
ch=getchar();
while(ch>='A' && ch<='C' || ch>='a' && ch<='c')
printf("\nThe digit 2 correspondes to the letter %c on the telephone.", ch);
while(ch>='D' && ch<='F' || ch>='d' && ch<='f')
printf("\nThe digit 3 correspondes to the letter %c on the telephone.", ch);
ETC. ETC. ETC.
Then a statement to show any invalid characters that are entered, such as,
while(ch<'A' && ch>' / ' || ch<' ' ' && ch>'z')
printf(\nThe entry %c is invalid.",ch);
while(ch !=' . ')
printf("\nStopped.",ch);
}
Can you please help? I can't get the program to print the users input and loop back to ask for the users input
again. All I get is a continous loop of the first input. Also, will any digits entered ( 0 thru 9) show up in the printf as invalid characters since I am using ch? Thanks for any help you can provide. Dan (Beginner)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Sorry
use
if (ch == '.')
instead of
if (ch = '.')
I forgot the ==
use
if (ch == '.')
instead of
if (ch = '.')
I forgot the ==
rbr, good thing you remember the '=='. That little thing has caused me more heartache that you can imagine.!! hehe, good thing I KNOW WHAT I AM DOING!!! (damn, what won't this loop work??!!??) heheheheh
The reason your code wasn't working is because the line:
while(ch>='A' && ch<='C' || ch>='a' && ch<='c')
printf("....");
will just keep executing (in this case, executing the printf statement) until your "while" clause is met; i.e. until "ch" is in the range of 'A' to 'C', you'll stay in that loop forever.
You only use a while loop when you want to repeat a certain action over and over until a specific outcome is achived. If you just want to look for certain values, use an "if" statement.
while(ch>='A' && ch<='C' || ch>='a' && ch<='c')
printf("....");
will just keep executing (in this case, executing the printf statement) until your "while" clause is met; i.e. until "ch" is in the range of 'A' to 'C', you'll stay in that loop forever.
You only use a while loop when you want to repeat a certain action over and over until a specific outcome is achived. If you just want to look for certain values, use an "if" statement.
ASKER
And a big Thank You for 'Nebeker' for the explanation. I was still wondering why the program was stuck in a continous loop before, now I understand a bit better. Also thanks to 'rbr' for the info., but could you explain why to do certain things in the program. I took a while trying to figure out why you did things a certain way and what the reasoning was behind it. I think I figured most of it, but still being a beginner, I guessing. Thanks again the program is working fine. Dan
ASKER