Comp Sci Need Help with Programming Class: Convert Feet & Metres

AI Thread Summary
The discussion focuses on a programming assignment where the user needs to create a conversion program between feet and meters. The initial code fails to handle invalid input, specifically when the user enters a number other than 1 or 2. Participants suggest using a while loop to repeatedly prompt the user until a valid input is received. Additionally, there are corrections regarding the misuse of the else statement, emphasizing the importance of proper syntax in if-else structures. Ultimately, the original poster resolves the issue with guidance from the forum.
Desi23
Messages
7
Reaction score
0
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.
 
Physics news on Phys.org
Desi23 said:
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.
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.
 
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)
 
Hurkyl said:
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 some if somebody enters the number 1.

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.
 
Hurkyl said:
Oh, by the way:
else (number==2);​
makes no sense.

Care to elaborate?
How do I correct it then
 
Desi23 said:
Care to elaborate?
How do I correct it then
What did you want the code to do?
 
It's simple. You just need to use while loop.

Exp:

Code:
    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;
 
ApexOfDE said:
It's simple. You just need to you while loop.
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)
 
Hurkyl said:
What did you want the code to do?

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 can't seem to write the correct if-else statements
 
  • #10
Im new in this forum so I don't 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.
 
  • #11
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:
if (number==1)
    {  cout << "Enter the distance in feet:";
       cin >> feet;
       // ...
       return 0;
    }[/color]
else
    (number==2);[/color]

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

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:
  • #12
Desi23 said:
2. If conversion to feet is chosen, then te user inputs metres, then it finds the feet.
Shouldn't you have an "if" statement to reflect that intent, then?


I'm having trouble writing the code for number 3. I can't seem to write the correct if-else statements
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.
 
  • #13
Hurkyl said:
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.

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"
 
  • #14
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.
 
  • #15
bhhbog.jpg

thats what is happening, I am very confused
 
  • #16
Again, I'll reformat your code:
Code:
if(number == 1)
   {  cout << "Enter the distance in feet:";
      // ...
   }
else
   if (number == 2)
      ;[/color]
{  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".
 
  • #17
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:
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)
 
  • #18
Hurkyl said:
Again, I'll reformat your code:
Code:
if(number == 1)
   {  cout << "Enter the distance in feet:";
      // ...
   }
else
   if (number == 2)
      ;[/color]
{  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".

Ive worked it out! Many thanks! :biggrin:
 

Similar threads

Replies
2
Views
3K
Replies
8
Views
1K
Replies
7
Views
2K
Replies
6
Views
3K
Replies
3
Views
1K
Replies
9
Views
3K
Back
Top