Paziuch utworzono 30 maja 2017 utworzono 30 maja 2017 Hej, robiłem program do obliczania BMI ale wynik zawsze równa się "nan" i nie wiem czemu. Mógłby mi ktoś wyjaśnić? #include <iostream> #include <cmath> using namespace std; float stopy, cale; float waga; float wzrost=(12*stopy+cale)*0.0254; float na_kg=waga/2.2; double bmi=na_kg/pow(wzrost, 2); int main() { // cout.setf(ios_base::fixed, ios_base::floatfield); cout<<"Podaj wzrost w stopach i calach"<<endl; cin>>stopy>>cale; cout<<"Podaj wage w funtach"<<endl; cin>>waga; cout<<"Twoje BMI wynosi: "<<bmi; return 0; }
Matematyk0 komentarz 31 maja 2017 komentarz 31 maja 2017 Wszystko dlatego, że obliczenia (wzrost, waga, bmi) obliczasz przed ich wprowadzeniem - czyli program najpierw liczy wzrost (0), później na_kg (0) i przy bmi liczy 0/0, co jest operacją nieistniejącą w matematyce, a wszelkie programy zwracają wtedy wartość nan/NaN (Not a Number). Żeby to naprawić, przenieś float wzrost=(12*stopy+cale)*0.0254; float na_kg=waga/2.2; double bmi=na_kg/pow(wzrost, 2); za wprowadzanie danych. Wtedy program wyglądałby tak: #include <iostream> #include <cmath> using namespace std; float stopy, cale; float waga; int main() { // cout.setf(ios_base::fixed, ios_base::floatfield); cout<<"Podaj wzrost w stopach i calach"<<endl; cin>>stopy>>cale; cout<<"Podaj wage w funtach"<<endl; cin>>waga; float wzrost=(12*stopy+cale)*0.0254; float na_kg=waga/2.2; double bmi=na_kg/pow(wzrost, 2); cout<<"Twoje BMI wynosi: "<<bmi; return 0; } 1
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.