Need help not allowing a negative number to be input
Please support our C++ advertiser: Programming Forums
Thread Solved
![]() |
•
•
Posts: 43
Reputation:
Solved Threads: 0
I do not want a negative number input for radius, length, width, base, height. How would I do this. My code is below. It should be pretty self explanatory.
Thanks.
[code]
Thanks.
[code]
syntax Syntax (Toggle Plain Text)
#include <iostream> #include <cmath> using namespace std; int main () { double const pi=3.14159; int radius, length, width, base, height, choice; double area; //Display the menu and get the user's choice cout << " Geometry Calculator \n\n"; cout << "1. Calculate the Area of a Circle\n"; cout << "2. Calculate the Area of a Rectangle\n"; cout << "3. Calculate the Area of a Trainge\n"; cout << "4. Quit\n"; cout << "\n"; cout <<"Enter your choice (1-4): "; cin >> choice; cout << "\n"; if (choice==1) {cout << "Please enter the radius of the circle: "; cin >> radius; area = radius * pi; cout << "The area of the circle is: " << area << endl;} else if (choice==2) {cout << "Please enter the length of the rectangle: "; cin >> length; cout << "Please enter the width of the rectangle: "; cin >> width; area = length * width; cout << "The area of the rectangle is: " << area << endl;} else if (choice==3) {cout << "Please enter the base length of the triangle: "; cin >> base; cout << "Please enter the height of the triangle: "; cin >> height; area = (base * height)/2; cout << "The area of the triangle is: " << area << endl;} else if (choice==4) {cout << "Thanks for trying the Geometry Calculator\n";} else {cout << "You can only select options 1-4, run the program again and select a option 1-4\n"; } return 0; }
Last edited by davids2004 : Nov 17th, 2008 at 10:25 pm.
•
•
Posts: 2,903
Reputation:
Solved Threads: 367
Write a function that does not allow for negative input:
Call this function from main when you need non-negative integer input.
int GetNonNegativeInteger ()
{
int input;
cin >> input;
while (input < 0)
{
// display error message.
// ask for input again
}
return input;
}Call this function from main when you need non-negative integer input.
•
•
Posts: 43
Reputation:
Solved Threads: 0
•
•
•
•
Write a function that does not allow for negative input:
int GetNonNegativeInteger () { int input; cin >> input; while (input < 0) { // display error message. // ask for input again } return input; }
Call this function from main when you need non-negative integer input.
Now I am confused.
Last edited by davids2004 : Nov 17th, 2008 at 11:28 pm.
•
•
Posts: 43
Reputation:
Solved Threads: 0
•
•
•
•
Where should the function go or where should the function call go?
Ok I got it. Here is my new code
[code]
syntax Syntax (Toggle Plain Text)
#include <iostream> #include <cmath> using namespace std; int main () { double const pi=3.14159; int radius, length, width, base, height, choice; double area; //Display the menu and get the user's choice cout << " Geometry Calculator \n\n"; cout << "1. Calculate the Area of a Circle\n"; cout << "2. Calculate the Area of a Rectangle\n"; cout << "3. Calculate the Area of a Trainge\n"; cout << "4. Quit\n"; cout << "\n"; cout <<"Enter your choice (1-4): "; cin >> choice; cout << "\n"; if (choice==1) {cout << "Please enter the radius of the circle: "; cin >> radius; while (radius<0) {cout << "Please enter a positive number: "; cin >> radius;} area = radius * pi; cout << "The area of the circle is: " << area << endl;} else if (choice==2) {cout << "Please enter the length of the rectangle: "; cin >> length; while (length<0) {cout << "Please enter a positive number: "; cin >> length;} cout << "Please enter the width of the rectangle: "; cin >> width; while (width<0) {cout << "Please enter a positive number: "; cin >> width;} area = length * width; cout << "The area of the rectangle is: " << area << endl;} else if (choice==3) {cout << "Please enter the base length of the triangle: "; cin >> base; while (base<0) {cout << "Please enter a positive number: "; cin >> base;} cout << "Please enter the height of the triangle: "; cin >> height; while (height<0) {cout << "Please enter a positive number: "; cin >> height;} area = (base * height)/2; cout << "The area of the triangle is: " << area << endl;} else if (choice==4) {cout << "Thanks for trying the Geometry Calculator\n";} else {cout << "You can only select options 1-4, run the program again and select a option 1-4\n"; } return 0; }
•
•
Posts: 2,903
Reputation:
Solved Threads: 367
#include <iostream> #include <cmath> using namespace std; int GetNonNegativeInteger () { int input; cin >> input; while (input < 0) { // display error message. // ask for input again } return input; } int main () { double const pi=3.14159; int radius, length, width, base, height, choice; double area; //Display the menu and get the user's choice cout << " Geometry Calculator \n\n"; cout << "1. Calculate the Area of a Circle\n"; cout << "2. Calculate the Area of a Rectangle\n"; cout << "3. Calculate the Area of a Trainge\n"; cout << "4. Quit\n"; cout << "\n"; cout <<"Enter your choice (1-4): "; cin >> choice; cout << "\n"; if (choice==1) {cout << "Please enter the radius of the circle: "; radius = GetNonNegativeInteger (); area = radius * pi; cout << "The area of the circle is: " << area << endl;} else if (choice==2) {cout << "Please enter the length of the rectangle: "; length = GetNonNegativeInteger (); cout << "Please enter the width of the rectangle: "; width = GetNonNegativeInteger (); area = length * width; cout << "The area of the rectangle is: " << area << endl;} else if (choice==3) {cout << "Please enter the base length of the triangle: "; cin >> base; cout << "Please enter the height of the triangle: "; cin >> height; area = (base * height)/2; cout << "The area of the triangle is: " << area << endl;} else if (choice==4) {cout << "Thanks for trying the Geometry Calculator\n";} else {cout << "You can only select options 1-4, run the program again and select a option 1-4\n"; } return 0; }
See red. You would do the same for base and height in option number 3. Have you used functions before? You need to change the commented parts of the function.
•
•
Posts: 43
Reputation:
Solved Threads: 0
Ok here is my final code. Cleaned it up a bit so it would not just say enter a positive number each time a negative number was entered
syntax Syntax (Toggle Plain Text)
#include <iostream> #include <cmath> using namespace std; int main () { double const pi=3.14159; int radius, length, width, base, height, choice; double area; //Display the menu and get the user's choice cout << " Geometry Calculator \n\n"; cout << "1. Calculate the Area of a Circle\n"; cout << "2. Calculate the Area of a Rectangle\n"; cout << "3. Calculate the Area of a Trainge\n"; cout << "4. Quit\n"; cout << "\n"; cout <<"Enter your choice (1-4): "; cin >> choice; cout << "\n"; if (choice==1) {cout << "Please enter the radius of the circle: "; cin >> radius; while (radius<0) {cout << "Negative radius not allowed, enter a positive radius: "; cin >> radius;} area = radius * pi; cout << "The area of the circle is: " << area << endl;} else if (choice==2) {cout << "Please enter the length of the rectangle: "; cin >> length; while (length<0) {cout << "Negative length not allowed, enter a positive length: "; cin >> length;} cout << "Please enter the width of the rectangle: "; cin >> width; while (width<0) {cout << "Negative width not allowed, enter a positive width: "; cin >> width;} area = length * width; cout << "The area of the rectangle is: " << area << endl;} else if (choice==3) {cout << "Please enter the base length of the triangle: "; cin >> base; while (base<0) {cout << "Negative base not allowed, enter a positive base: "; cin >> base;} cout << "Please enter the height of the triangle: "; cin >> height; while (height<0) {cout << "Negative height not allowed, enter a positive height: "; cin >> height;} area = (base * height)/2; cout << "The area of the triangle is: " << area << endl;} else if (choice==4) {cout << "Thanks for trying the Geometry Calculator\n";} else {cout << "You can only select options 1-4, run the program again and select a option 1-4\n"; } return 0; }
Last edited by davids2004 : Nov 17th, 2008 at 11:44 pm.
•
•
Posts: 43
Reputation:
Solved Threads: 0
•
•
•
•
#include <iostream> #include <cmath> using namespace std; int GetNonNegativeInteger () { int input; cin >> input; while (input < 0) { // display error message. // ask for input again } return input; } int main () { double const pi=3.14159; int radius, length, width, base, height, choice; double area; //Display the menu and get the user's choice cout << " Geometry Calculator \n\n"; cout << "1. Calculate the Area of a Circle\n"; cout << "2. Calculate the Area of a Rectangle\n"; cout << "3. Calculate the Area of a Trainge\n"; cout << "4. Quit\n"; cout << "\n"; cout <<"Enter your choice (1-4): "; cin >> choice; cout << "\n"; if (choice==1) {cout << "Please enter the radius of the circle: "; radius = GetNonNegativeInteger (); area = radius * pi; cout << "The area of the circle is: " << area << endl;} else if (choice==2) {cout << "Please enter the length of the rectangle: "; length = GetNonNegativeInteger (); cout << "Please enter the width of the rectangle: "; width = GetNonNegativeInteger (); area = length * width; cout << "The area of the rectangle is: " << area << endl;} else if (choice==3) {cout << "Please enter the base length of the triangle: "; cin >> base; cout << "Please enter the height of the triangle: "; cin >> height; area = (base * height)/2; cout << "The area of the triangle is: " << area << endl;} else if (choice==4) {cout << "Thanks for trying the Geometry Calculator\n";} else {cout << "You can only select options 1-4, run the program again and select a option 1-4\n"; } return 0; }
See red. You would do the same for base and height in option number 3. Have you used functions before? You need to change the commented parts of the function.
I am very new at this. First time running C++. We have not learned functions yet. What do you mean change the commented parts of the function. I redid some code a little different then what you showed and it works.
•
•
Posts: 2,903
Reputation:
Solved Threads: 367
•
•
•
•
We have not learned functions yet. What do you mean change the commented parts of the function. I redid some code a little different then what you showed and it works.
Yes, you did the same thing as what I was recommending, just you didn't use functions. What I meant by change the commented sections is to do what you did in your code:
int GetNonNegativeInteger ()
{
int input;
cin >> input;
while (input < 0)
{
// display error message.
// ask for input again
}
return input;
}Change the red code to this:
cout << "Negative number not allowed." << endl; cin >> input;
Which is what you have in your code, just slightly different each time, which is correct. If you are not going to use a function, doing it the way you did it is correct and is equivalent. When you learn functions, you'll probably do it the way I did it since you are doing the same thing five times. You did it right.
![]() |
Similar Threads
Other Threads in the C++ Forum
- memory management in wndows 2000 (Windows NT / 2000 / XP / 2003)
- Problems with displaying total payroll and allowing user to quit by entering a neg. (C++)
Other Threads in the C++ Forum
- Previous Thread: GCC Exception handling w/ threads
- Next Thread: complier needed
•
•
•
•
Views: 573 | Replies: 10 | Currently Viewing: 1 (0 members and 1 guests)






Linear Mode