Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C++ Function Calling Help

  1. Feb 28, 2012 #1
    1. The problem statement, all variables and given/known data

    I am writing a program which requires me to make and call a function: string Menu()

    This function will display a message to the user. It will then accept the user's choice (as a string) and check it for validity - that is did the user enter a "1", "2", "3", "4", "Q", or "q"? If so, the string should be returned to the calling function (main()). If not, an error message should be displayed and the user should be given another change to make a choice - this should continue until the user enters a valid value.

    2. Relevant equations

    3. The attempt at a solution

    What I am confused about is how I am supposed to take a string value from the user. Would it be correct to store this string value in a local string variable within the string Menu() function? I don't understand how I am supposed to return the string to the calling function if it is valid.

    Right now, I have the function prototyped, and I have the calling statement, I just need to write the actual function code.

    Would something like this be correct?

    string Menu()
    while (1)

    if (user_value==1 || user_value==2 || user_value==3 || user_value==4 || user_value == "q" || user_value == "Q")

    return user_value;

    else if (user_value!=1 || user_value!=2 || user_value!=3 || user_value!=4 || user_value != "q" || user_value != "Q")

    cout<<"invalid choice, try again: "
    cin>> userValue;


  2. jcsd
  3. Feb 28, 2012 #2


    User Avatar

    Staff: Mentor

    Why not Menu(&string)?
  4. Feb 28, 2012 #3


    Staff: Mentor

    why not use the string value as the loop test?

    ** note: this is pseudo code not C++ code:

    String menu()
    String ans=""

    while(ans=="") {
    if(ans not valid) ans=""

    return ans

    notice that the loop ends when the ans != "" ie the user entered a valid string
  5. Feb 28, 2012 #4
    I meant to type Menu(). To myself, Menu(string) would make more sense, but for some reason the professor told us to type it like that without any arguments. Is this most likely a mistake from her end, or is there some other way to take an argument?
  6. Feb 28, 2012 #5


    Staff: Mentor

    I doubt very much that this is a mistake. The program requirements are that this function takes no arguments, and returns a string entered by the user to the caller (main).

    I see several things wrong with your code.
    1) user_value is not declared.
    2) userValue is not declared. Why do you have two variables with similar names when one would suffice?
    3) your if statement is missing the braces - { } - for its body. In some limited cases you can omit the braces, but it's generally a good idea to include them, even when you don't have to. In your case, this causes a syntax error that the compiler will flag.
    4) user_value is likely a string variable, yet you are comparing it to integer constants.
    5) your break statement will never execute, since it comes after a return statement.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook