Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Help in excuting loops.

Posted on 1998-04-10
6
180 Views
Last Modified: 2010-04-15
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)      
 
0
Comment
Question by:cstudent
6 Comments
 

Author Comment

by:cstudent
ID: 1258073
Edited text of question
0
 
LVL 10

Accepted Solution

by:
rbr earned 50 total points
ID: 1258074
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
 
LVL 10

Expert Comment

by:rbr
ID: 1258075
Sorry
use
if (ch == '.')
instead of
if (ch = '.')

I forgot the ==
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 2

Expert Comment

by:kellyjj
ID: 1258076
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
 
LVL 5

Expert Comment

by:nebeker
ID: 1258077
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
 

Author Comment

by:cstudent
ID: 1258078
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

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question