Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 250
  • Last Modified:

Using function prototypes with a loop

I am writing a program to use global function prototypes. So far I have the functions working the way I want but
the last last part of the loop will not print the letter and terminate the program. Can any body help? I can not use
global variables and goto statements. I have six letters to let the user pick from,('A/a','B/b','P/p','X/x','y/y',or'Q/q')
once the letter is chosen, it prints out as an upper case version using the lower case letter. If the letter 'Q' or 'q'
is used it is supposed to print out the upper case version and terminate. This is where I am having the problem.
The program starts:
#include <stdio.h>
void prn_A(void);
void prn_B(void);
void prn_P(void);
void prn_X(void);
void prn_Y(void);
void prn_Q(void);
void main ()
{
  char ch;
      do
      { printf("Enter one of the following upper or lower case letters, A/a, B/b, P/p, X/x, Y/y or (Q/q to quit)"  );
                        flushall();
                        ch=getchar();
            if(ch=='Q' || ch=='q')
                continue;
                else if(ch=="A' || ch=='a')
                           prn_A();
                else if(ch=='B' || ch=='b')
                           prn_B();
                else if(ch=='P' || ch=='p')
                           prn_P();
                else if(ch=='X' || ch=='x')
                           prn_X();
                else if(ch=='Y' || ch=='y')
                           prn_Y();
     }
       while(ch!='Q' || ch!='q');
                 prn_Q();
}
       void prn_A(void)
       {
         printf("This is where it prints the upper case version of 'A' using lower case 'a'");
       }
       void prn_B(void)
       {
        printf("This is where it prints the upper case version of 'B' using lower case 'b'");
       }
       void prn_P(void)
       {
        printf("This is where it prints the upper case version of 'P' using lower case 'p'");
       }
And so on, the remaining letters are the same. As I said, everything works up to the point where I try to print
the letter 'Q' and terminate the program. I am new at this so please have patience with my programing.            
0
cstudent
Asked:
cstudent
  • 3
  • 2
1 Solution
 
cstudentAuthor Commented:
Edited text of question
0
 
q2guoCommented:
I think line
while(ch!='Q' || ch!='q');

should be
while(ch !='Q' && ch !='q');
0
 
cstudentAuthor Commented:
Thanks for the info. It worked just fine. My only question is why the && and not the || ?
Don't both conditions have to be true using && ? Thanks again. cstudent
0
 
q2guoCommented:
Well, think about it

when you say while(ch != 'Q' || ch != 'q')
you are telling the computer you want to stay in the
loop if ch is not Q or ch is not q.  Since ch will
never be Q and q at the same time.  So, the loop continues for
ever.
0
 
cstudentAuthor Commented:
g2guo,
Thanks for the explanation. It helped a lot.
                                        cstudent
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now