zum einen lassen sich im spoiler auch code bzw. php-tags verschachteln:
PHP-Code:
# include <stdio.h>
float bmi (float gewicht, float groese) {
return ((10000*gewicht)/(groese*groese));
}
int main (void)
{
float gewicht, groese;
int geschlecht;
float ergebnis;
char text1[]="Body Mass Index Rechner\n\n";
char text2[]="Ihr Gewicht in kg:";
char text3[]="Ihre Gr\x94se in cm:";
char text4[]="Ihr Geschlecht (0=Frau, 1=Mann):";
printf(text1);
printf(text2); scanf_s ("%f", &gewicht);
printf(text3); scanf_s ("%f", &groese);
printf(text4); scanf_s ("%d", &geschlecht);
ergebnis= bmi (groese, gewicht);
printf("\nIhr BMI betraegt: %f", ergebnis);
if (geschlecht == 0 && ergebnis<19)
{
printf("\nBMI-Gruppe: Untergewicht!");
}
else
{
if (geschlecht == 0 && ergebnis>=19 && ergebnis<=24)
{
printf("\nBMI-Gruppe: Normalgewicht!");
}
else
{
if (geschlecht == 0 && ergebnis>=25 && ergebnis<=30)
{
printf("\nBMI-Gruppe: Uebergewicht!");
}
else
{
if (geschlecht == 0 && ergebnis>30)
{
printf("\nBMI-Gruppe: Behandlungsbeduerftiges Uebergewicht!");
}
else
{
if (geschlecht == 1 && ergebnis<20)
{
printf("\nBMI-Gruppe: Untergewicht!");
}
else
{
if (geschlecht == 1 && ergebnis>=20 && ergebnis<=25)
{
printf("\nBMI-Gruppe: Normalgewicht!");
}
else
{
if (geschlecht == 1 && ergebnis>=26 && ergebnis<=30)
{
printf("\nBMI-Gruppe: Uebergewicht!");
}
else
{
if (geschlecht == 1 && ergebnis>30)
{
printf("\nBMI-Gruppe: Behandlungsbeduerftiges Uebergewicht!");
}
}
}
}
}
}
}
}
return 0;
}
das fördert ungemein die lesbarkeit deines prgrammcodes. beachte, ich habe (u.a.) deine globalen variablen als lokale variablen von main() deklariert.
gewöhne dir bitte so früh wie möglich ab globale variablen zu verwenden!
zum andern ist dein code standard C. kein c++ sprachmerkmal für mich erkennbar. aber egal, c++ ist ja abwärtskompatibel.
da mein cygwin-gcc gerade buggy ist, und ich jetzt keinen bock habe deinetwegen linux zu starten, allgemeine ratschläge:
a) per
cout (c++) oder eben printf in bmi() die eingabe-parameter ausgeben, um zu schaun, ob auch die erwarteten parameter an die funktion übergeben werden.
b) die ausgabe der bmi-auswertung auch in eine funktion auslagern, und da per switch
m/w zu unsterscheiden. so brauchst du kein einziges
else. 9-fach geschachtelte if-cascaden sind
sehr schwer les- bzw. wartbar.
PHP-Code:
void auswertung (int mw, float bmi) {
switch (mw) {
case 0:
if (bmi < 19) {
cout << "\nBMI-Gruppe: Untergewicht!";
}
if (bmi >= 19 && bmi <=24) {
cout << "\nBMI-Gruppe: Normalgewicht!";
}
.....
break;
case 1:
.....
break;
default:
cout << "aliens unerwünscht!\n";
exit (-1);
}
}
viel erfolg!
und nicht vergessen: globale variablen sind baba