Need Help with Programming Class: Convert Feet & Metres

Click For Summary

Discussion Overview

The discussion revolves around a programming assignment focused on creating a conversion program that translates distances between feet and meters. Participants are addressing issues related to conditional statements, specifically how to handle user input and provide appropriate feedback for invalid choices.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant seeks help on how to implement error handling for invalid user input when choosing between feet and meters.
  • Another participant questions the logic of the original code, specifically pointing out that the syntax used for the else statement is incorrect.
  • Some participants suggest using a while loop to repeatedly prompt the user until a valid input is received.
  • There are discussions about the structure of if-else statements and the importance of proper syntax to avoid compilation errors.
  • One participant emphasizes that the description of the program's intent should guide the structure of the code, implying that the logic should be clear and straightforward.
  • Another participant points out that a misplaced semicolon can lead to syntax errors and suggests a coding style that minimizes such mistakes.

Areas of Agreement / Disagreement

Participants express differing views on the best approach to handle invalid input and the correct syntax for if-else statements. There is no consensus on a single solution, as multiple suggestions and corrections are offered throughout the discussion.

Contextual Notes

Some participants note that the original code contains logical errors and syntax issues that need to be addressed, but they do not resolve these issues definitively. The discussion highlights the complexity of conditional programming and the common pitfalls that can occur.

Who May Find This Useful

Individuals learning programming, particularly in C++, who are interested in input validation and control flow structures may find this discussion beneficial.

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;

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


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

conv1= feet * 0.3048;

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

return 0;
}


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

conv2= metres * 3.2808;

count << 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 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 24 ·
Replies
24
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 9 ·
Replies
9
Views
3K
Replies
10
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 66 ·
3
Replies
66
Views
6K