Question
Quand je déclare int weight
puis une entrée 165.1
double valeur 2ème cin >> height;
ne fonctionne pas et il n'y a pas de message d'erreur. Peux-tu me dire pourquoi?
VS2010 Application console utilisée.
#include <iostream>
using namespace std;
const double lbs_to_kg = 2.2046, inches_to_meter = 39.370;
int main()
{
int weight, height;
double kilograms, meters;
cout << "\nEnter weight in pounds: ";
cin >> weight;
kilograms = weight / lbs_to_kg;
cout << "\nEnter height in inches: ";
cin >> height;
meters = height / inches_to_meter;
cout << "\nYour BMI is approximately "
<< "\nbody fat ratio is "
<< kilograms / (meters * meters)
<< ". Under 25 is good."
<< endl;
}
output:
Enter weight in pounds: 165.1
Enter height in inches:
Your BMI is approximately
body fat ratio is 1.57219e-013. Under 25 is good.
La solution
Si vous essayez d'avoir des données d'extrait de cin
dans une variable qui ne peut pas tenir, les données reste dans le flux d'entrée et cin
est signalé comme ayant échoué. Vous devez vérifier si elle a échoué avec !cin
et cin.clear()
utilisation pour effacer l'indicateur de défaillance pour que vous puissiez lire à nouveau (opérations d'extraction de l'avenir échouera automatiquement jusqu'à ce que le drapeau est effacé). Vous pouvez extraire les données dans une autre variable qui est capable de la tenir, ou l'utilisation cin.ignore()
pour la supprimer