Po co funkcja calculateBodyMassIndex przyjmuje dwa argumenty, skoro i tak ich nie wykorzystuje (to znaczy wykorzystuje, ale jako zmienne lokalne)?
Błąd jest w linii wyliczającej BMI: cała arytmetyka jest całkowitoliczbowa, a powinna być zmiennoprzecinkowa. Zrób tak:
float bmi = (weight / ((height / 100.) * (height / 100.)));