Wyliczanie BMI, liczba zmiennoprzecinkowa

0

Kod programu:

#include <iostream>  

int main()  
 {  
      using namespace std;  
   
      int wzrost;
	  cout << "Podaj swoj wzrost: " << endl;
	  cin >> wzrost;
	  
	  int waga;
	  cout << "Podaj swoja wage: ";
	  cin >> waga;
	  
	  double wyliczaniewzrostu;
	  wyliczaniewzrostu = wzrost * wzrost;
	  
	  double BMI;
	  BMI = waga / wyliczaniewzrostu;
	  cout << "Twoje BMI to: " << BMI << endl;
	  
	  return 0;
}
      

Przykładowa wartość: Wzrost 165 cm, waga 60kg powinna zwrócić wartość: 22.03. U mnie w programie wygląda to tak: 0.00220386. Próbowałem już zmienić typ double w BMI na int / float ale skutkowało to wartością 0 przy powyższych parametrach. W środku powyższego (pogrubionego) wyniku znajduje się prawidłowa wartość ...2203.... jak doprowadzić to do porządku?

4

Boś nie zwrócił uwagi na jednostki.
Ten wzór na BMI oczekuje wzrostu w metrach.

Btw, bardzo sobie ten swój program skomplikowałeś:

#include <iostream>  
 
int main() {  
	float wzrost, waga;

	std::cout << "Podaj swoj wzrost: " << std::endl;
	std::cin >> wzrost;

	std::cout << "Podaj swoja wage: " << std::endl;
	std::cin >> waga;

	std::cout << "Twoje BMI to: " << BMI(wzrost, waga) << std::endl;

	return 0;
}

double BMI(float wzost, float waga) {
	return waga / (wzrost * wzrost);
}
4
Wzrost ma być w metrach, czyli:

#include <iostream>  
 
int main()  
 {  
      using namespace std;  
 
      cout << "Podaj swoj wzrost: " << endl;
      int wzrost;
      cin >> wzrost;
 
      cout << "Podaj swoja wage: ";
      int waga;
      cin >> waga;
 
      cout << "Twoje BMI to: " << (10000.0* waga / (wzrost * wzrost)) << endl;
      return 0;
}
0

Wyliczając BMI wzrost podaje się w metrach, nie cm

wyliczaniewzrostu = static_cast<double>( wzrost * wzrost ) / 10000.0;

1 użytkowników online, w tym zalogowanych: 0, gości: 1