|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
This is a small program in C++. I want to try to type in real number instead
of integer to see how the program runs. And I am confused. If I input integer for both variables, the program runs fine. But if I input a real number for the height (like 68.2), the second cin doesn't work at all!! I expected any real number will be truncated and that is my only expectation. But it seems that there are other problems. Can anybody try it? #include <iostream> using namespace std; int main(void) { const double INCHES_PER_METER = 39.37; const double POUNDS_PER_KG = 2.24; int height; int weight; cout << "METRIC CONVERTER" << endl << endl ; cout << "Enter your height in inches " ; cout << "(No fractions, please!) : " ; cin >> height; cout << "Enter your weight in pounds" ; cout << "(No fractions, please!)" ; cin >> weight; cout << endl ; double metric_height = height/INCHES_PER_METER; double metric_weight = weight/POUNDS_PER_KG; cout << "Your height is " << metric_height << " meters." << endl; cout << "Your weight is " << metric_weight << " kilograms." << endl; return 0; } |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Apr 7, 11:33 am, "John Ruan" <rds1...@sh163.net> wrote:
> This is a small program in C++. I want to try to type in real number instead > of integer to see how the program runs. > And I am confused. If I input integer for both variables, the program runs > fine. But if I input a real number for the height (like 68.2), the second > cin doesn't work at all!! > > I expected any real number will be truncated and that is my only > expectation. But it seems that there are other problems. Can anybody try it? > > #include <iostream> > using namespace std; > > int main(void) > { > const double INCHES_PER_METER = 39.37; > const double POUNDS_PER_KG = 2.24; > > int height; > int weight; > > cout << "METRIC CONVERTER" << endl << endl ; > cout << "Enter your height in inches " ; > cout << "(No fractions, please!) : " ; > cin >> height; > > cout << "Enter your weight in pounds" ; > cout << "(No fractions, please!)" ; > cin >> weight; > cout << endl ; > > double metric_height = height/INCHES_PER_METER; > > double metric_weight = weight/POUNDS_PER_KG; > > cout << "Your height is " << metric_height << " meters." << endl; > cout << "Your weight is " << metric_weight << " kilograms." << endl; > > return 0; > > } Your assumption is incorrect. If a stream is unable to convert to the requested type it sets an error bit. I don't remember which one, but I believe you can check it with cin.bad(). I would of course refresh my memory by reading up on streams and stream error handling, but I'll leave that to you. The same rules apply to other streams. That is how you can check whether the user typed in a value of the type you were expecting and then tell them they aren't following instructions and to try again. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
John Ruan wrote:
> This is a small program in C++. I want to try to type in real > number instead of integer to see how the program runs. > And I am confused. If I input integer for both variables, the > program runs fine. But if I input a real number for the height > (like 68.2), the second cin doesn't work at all!! > The input is originally text, which is scanned for digits that can be part of an integer. The first input reads a 6 and an 8, and gives you the number 68. When you try to read a second integer, the first character found is a period, which is an error for integers. You get no number. Bo Persson |
|
![]() |
| Outils de la discussion | |
|
|