954,193 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

If Else If Help plz

Hi, im a new to C++ and i am having an issue with if else if commands. I have the code below, and i am attempting to make it so when prompted "Do you want the correct answers?" you can type yes and it will display the answers, or type no to display "have a nice day" and if neither are typed then it says "you did not enter a valid character" and thats the end of the program.

if you have any help please do leave a message, keep in mind im new to C++

Thanks
-Scott

//NOT ENTIRE PROGRAM 
//Additional work
  cout << "Do you want the correct answers? (Type yes or no)\n";
  
  char x;
  cin >> x;
  //cin.ignore(50, '\n');
  
  
  float PIa=3.14159;
  float PI2a=3.14285714;
  float Ea=2.718281828459;    
  if (x == yes)
     {
         system("CLS");
         cout << "Have a nice day!\n";
         cin.ignore(50, '\n');
     }
  else if (x == no)
     {
         cout << "\"PI\" is equal to:  " << PIa << endl
              << "\"E\" is equal to:  " << Ea << endl
              << "\"22/7\" is equal to:  " << PI2a << endl;
              
     }
     else
     {
         cout << "You did not enter a valid character\n";
     }      
    system("PAUSE");
    return 0;
}
killerdrummer2
Newbie Poster
4 posts since Jul 2006
Reputation Points: 10
Solved Threads: 0
 

You have to remember that this code is only inputting one charecter:

cout << "Do you want the correct answers? (Type yes or no)\n";
  
  char x;
  cin >> x;

Because char only can hold one charecter, you'll need an array of letters to be able to hold a response that's more than one letter long. For example:

char name[200]; // holds a name up to 200 charecters


Better yet, to make it more C++, use a string , which does not have to be an array, and instead dynamically allocates the memory needed.

Of course, you may have only been intending to hold one charecter, but then when I saw this, it made be think that you wanted to input more:

if (x == yes)

Now you've got several things wrong with this. The most obvious mistake is that you're not using quotes around the string; thus it will confuse the compiler. Secondly, unless the variable is only 1 charecter long (see previous section), you cannot compare C-style strings with ==. If you want to compare a string, you must use strcmp (). Yet another reason to use string instead of char (strings can be compared with ==).

Lastly, this isn't entirely incorrect but...

system("PAUSE");

A more portable and standard method to do this is simply to use

cin.get();


Hope this helps

John A
Vampirical Lurker
Team Colleague
7,630 posts since Apr 2006
Reputation Points: 2,240
Solved Threads: 339
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You