1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C++ Program

  1. Oct 9, 2009 #1
    I'm making a program for one of my programming classes and just needed some help!

    #include <iostream>
    #include <iomanip>

    using namespace std;
    int main()
    {

    int number;
    float feet;
    float metres;
    float conv1;
    float conv2;

    cout << "Do you wish to convert 1. feet to metres or 2. metres to feet?" << "\n";
    cout << "Enter your choice here:";
    cin >>number;
    cout <<"\n";


    if (number==1)
    { cout << "Enter the distance in feet:";
    cin >> feet;
    cout <<"\n";

    conv1= feet * 0.3048;

    cout << setprecision(4) << fixed << feet << setw(8) << "feet is" << setw(7) << conv1 << setw(9) << "metre(s)" << "\n";

    return 0;
    }


    else (number==2);
    { cout << "Enter the distance in metres:";
    cin >> metres;
    cout <<"\n";

    conv2= metres * 3.2808;

    cout << setprecision(4) << fixed << metres << setw(12) << "metre(s) is" << setw(7) << conv2 << setw(5) << "feet" << "\n";
    }




    return 0;










    I have that so far, and I can't figure out how to write the code if somebody enters a number other then 1 or 2 it will output an "invalid" message. Can somebody help me out here this is driving me crazy lol.
     
  2. jcsd
  3. Oct 9, 2009 #2

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I don't understand why you think the problem of writing code that does something if somebody enters a number other than 1 or 2 is any different than the problem of how to write code that does something if somebody enters the number 1.
     
  4. Oct 9, 2009 #3

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Oh, by the way:
    else (number==2);​
    makes no sense.

    (Well, technically it has a well-defined meaning -- it's just that that meaning is certainly nothing you would ever even imagine writing in a program)
     
  5. Oct 9, 2009 #4
    I've tried many ways so it outputs a INVALID message for example if I entered the number 3 where it says DO YOU WISH TO CONVERT 1...
    But I cannot seem to get it working.
     
  6. Oct 9, 2009 #5
    Care to elaborate?
    How do I correct it then
     
  7. Oct 9, 2009 #6

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    What did you want the code to do?
     
  8. Oct 9, 2009 #7
    It's simple. You just need to use while loop.

    Exp:

    Code (Text):

        int number;

        cout << "Do you wish to convert 1. feet to metres or 2. metres to feet?" << "\n";
        cout << "Enter your choice here:";
        cout << endl;

        while ((number != 1) && (number != 2))
        {
            cout << "Do you wish to convert 1. feet to metres or 2. metres to feet?" << "\n";
            cout << "Enter your choice here:";
            cout << endl;
        }

        cin >> number;
        return 0;
     
     
  9. Oct 9, 2009 #8

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    The program you wrote doesn't solve the problem the opening poster stated -- in fact, it surely doesn't even work how you intended. (And see the private message I sent you)
     
  10. Oct 9, 2009 #9
    This program has to:
    1. If conversion to meteres is chosen, then the user inputs the feet, then it finds the metres.
    2. If conversion to feet is chosen, then te user inputs metres, then it finds the feet.
    3. If neither choice is chosen by the user, then it must output an error message
    I'm having trouble writing the code for number 3. I cant seem to write the correct if-else statements
     
  11. Oct 9, 2009 #10
    Im new in this forum so I dont know that rule. Sry about that. :(

    About problem, I just think that he wants to display time-to-time a block of text when input is not 1 or 2; while loop can do that job.
     
  12. Oct 9, 2009 #11

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I've reformatted your code that reflects how it's structured, and added some colors to help identify certain statements. I've snipped out some code for brevity, and replaced it with comments.

    Code (Text):

    if (number==1)
    [color=green]    {  cout << "Enter the distance in feet:";
           cin >> feet;
           // ...
           return 0;
        }[/color]
    else
        [color=red](number==2);[/color]

    [color=purple]{  cout << "Enter the distance in metres:";
       cin >> metres;
       // ...
    }[/color]

    [color=brown]return 0;[/color]
     
    In this piece of code, you have an if-else statement. The statement in green (an entire block) is executed if number==1 is true -- and the statement in red is executed if the number==1 is false.

    (Yes, (number==2); is a statement. It doesn't do anything except in very esoteric circumstances, but it's a statement)

    The statement in purple (an entire block) happens after the if-else statement. It doesn't get executed after the green block, because that contains a return statement which exits the function. However, it does get executed after the red block.

    Finally, the brown statement is executed.
     
    Last edited: Oct 9, 2009
  13. Oct 9, 2009 #12

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Shouldn't you have an "if" statement to reflect that intent, then?


    If you're having trouble with #3, don't make the common mistake of spending all of your time trying to figure out what's wrong with your #3 code. Sometimes, the mistake is elsewhere.
     
  14. Oct 9, 2009 #13
    Alright I read your previous post and I tried but now I'm getting this
    error: expected primary-expression before "else"
    error: expected ';' before "else"
     
  15. Oct 9, 2009 #14

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Well, it's hard to tell what your syntax error is if you don't post your code.

    But surely, you have an "else" keyword such that the space between it and the previous "if" keyword does not consist of exactly one complete statement.

    P.S. did you read my post describing what was wrong with your initial attempt?
    P.P.S. I note the description of what you want to do doesn't have the word "else" in it. The direct translation of your description into a program wouldn't contain "else" either.
     
  16. Oct 9, 2009 #15
    bhhbog.jpg
    thats what is happening, Im very confused
     
  17. Oct 9, 2009 #16

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Again, I'll reformat your code:
    Code (Text):

    if(number == 1)
       {  cout << "Enter the distance in feet:";
          // ...
       }
    else
       if (number == 2)
          [color=red];[/color]
    [color=green]{  cout << "Enter the distance in metres:";
       // ...
    }[/color]
    else
       {  cout << "invalid";
       }
     
    In particular, your final else doesn't correspond to any previous "if". I assume that's what the compiler is telling you when it says
    error: expected primary-expression before "else"​
    although one of the later errors may be more indicative.

    The mistake is the semi-colon marked in red: you surely did not intend for that to be your "then-expression". Instead, you wanted the green block to be the "then-expression".
     
  18. Oct 9, 2009 #17

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Messing up if-statements in ways similar to this is a relatively common error. I suggest using a writing style that makes it difficult to make errors like that. The style I use looks like

    Code (Text):

    if(test) {
       // stuff here
    }

    if(test) {
       // stuff here
    } else {
       // stuff here
    }
    In this style, having a semi-colon in the wrong place looks really awkward, so it's easy to spot.



    But, if you like your style -- then just be aware you're prone to this error, and look for it. (And learn how to tell when your compiler is complaining about that error)
     
  19. Oct 9, 2009 #18
    Ive worked it out! Many thanks!! :biggrin:
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: C++ Program
  1. Program in C (Replies: 1)

Loading...