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;
}

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

This article has been dead for over six months. Start a new discussion instead.