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.
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top