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)      
 
cstudentAsked:
Who is Participating?
 
rbrConnect With a Mentor Commented:
Try

   #include <stdio.h>
   main()
   {
    char ch='  ' ;
    do {
    printf("Enter a single letter, and I will tell you what the corresponding digit is on the
   telephone \
    (Period to stop).   ");
                                         flushall();
                                         ch=getchar();
   if (ch = '.')
        continue;

   if(ch>='A' && ch<='C' || ch>='a' && ch<='c')
            printf("\nThe digit 2 correspondes to the letter %c on the telephone.", ch);

   if(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,

   if(ch<'A' && ch>' / ' || ch<' ' ' && ch>'z')
           printf(\nThe entry %c is invalid.",ch);

    } while(ch !='.');
     printf("\nStopped.",ch);
 
0
 
cstudentAuthor Commented:
Edited text of question
0
 
rbrCommented:
Sorry
use
if (ch == '.')
instead of
if (ch = '.')

I forgot the ==
0
Evaluating UTMs? Here's what you need to know!

Evaluating a UTM appliance and vendor can prove to be an overwhelming exercise.  How can you make sure that you're getting the security that your organization needs without breaking the bank? Check out our UTM Buyer's Guide for more information on what you should be looking for!

 
kellyjjCommented:
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
0
 
nebekerCommented:
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.


0
 
cstudentAuthor Commented:
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
0
All Courses

From novice to tech pro — start learning today.