Teilen funktioniert nicht mehr



  • Hallo ihr!
    Vielleicht könnt ihr mir helfen.
    Ich hab eine Funktion in der zwei floats durcheinander geteilt werden sollten und das Ergebnis zurückgeliefert wird.
    Allerdings funktioniert das teilen nicht. es wird immer nur der Wert zurückgegeben, der über dem Bruchstrich steht. An der Funktion liegt es nicht, an den Variablen auch nicht...

    Jetzt hab ich keine Ahnung mehr was da schieflaufen könnte.
    Hoffentlich weiß einer eine Lösung

    Danke

    Peter



  • Da fehlt ein ; in Zeile 5. Im Ernst, ohne Code kann man nur raten.



  • Ja natürlich
    Das ist die besagte Funktion

    float bmi(float fGewicht,float fGroesse)
    {
    float BMI = 0.0;
    BMI = (fGewicht/(fGroesse * fGroesse));
    return BMI;
    }



  • es wird immer nur der Wert zurückgegeben, der über dem Bruchstrich steht. An der Funktion liegt es nicht, an den Variablen auch nicht...

    was für ein compiler?

    BMI = (fGewicht/(fGroesse * fGroesse));

    nach deiner diagnose zu urteilen ignoiert der compiler die klammern..



  • Der Compiler ist Visual Studio 2005

    Es scheint als ob der ganze Klammerausdruck überlesen wird



  • Ich schliesse einen Compilerbug aus. Der Bug ist irgendwo anders. Wahrscheinlich in dem Code den wir nicht sehen können.



  • Ich poste jetzt mal den gesamten Code. Vielleicht hilfts ja was. Und bitte nicht lachen.

    #include <stdio.h>
    #include <stdlib.h>
    
    float EingabeGewicht(void)
    	{
    		float fGewicht = 0.0;
    		printf("\n\nBitte gib dein Gewicht in kg ein.\nUnd nicht schummeln!!!\n\n");
    		scanf(" %f", &fGewicht);
    		return fGewicht;
    	}
    
    float EingabeGroesse(void)
    	{
    		float fGroesse = 0.0;
    		printf("\n\nBitte gib jetzt deine Koerpergroesse in Metern an!\n\n");
    		scanf(" %f", &fGroesse);
    		return fGroesse;
    	}
    
    float bmi(float fGewicht,float fGroesse)
    	{
    		float BMI = 0.0;
    		BMI = (fGewicht/(fGroesse * fGroesse));
    		return BMI;
    	} 
    
    void Ausgabe(float BMI)
    	{
    		printf("\n\nDein Body-Mass-Index betraegt: %f\n\n", BMI);
    		if(BMI < 15)
    			{printf("Das heisst du bist viel zu duenn und solltest dir sofort eine Pizza bestellen\n\n");}
    		else if(15 <= BMI && BMI < 19)
    			{printf("Das heisst du bist ein bisschen zu duenn. Also schnell zu McDonalds!\n\n");}
    		else if(19 <= BMI && BMI < 25)
    			{printf("Damit bist du optimal!!!\n\n");}
    		else if(25 <= BMI && BMI < 30)
    			{printf("Das heisst du bist ein wenig zu dick. Also besser oefter mal mit dem Fahrrad fahren!!!\n\n");} 
    		else if(30 <= BMI && BMI < 40)
    			{printf("Das heisst du bist zu dick. Also gleich 15 Runden um das Gebäude laufen\nund die Suessigkeiten weglassen!!!\n\n");}
    		else if(40 < BMI)
    			{printf("Du bist viel zu dick. Am besten du suchst einen Ernaehrungsberater auf!!!\n\n");}
    	}
    
    int main(void)
    	{
    		float fGewicht = 0.0;
    		float fGroesse = 0.0;
    		float BMI = 0.0;
    
    		printf("\nMit diesem Programm kannst du deinen Body-Mass-Index ermitteln\nund sehen ob du zu dick, zu duenn oder genau richtig bist.\n");
    		fGewicht = EingabeGewicht();
    		fGroesse = EingabeGroesse();
    		BMI = bmi(fGewicht,fGroesse);
    		Ausgabe(BMI);
    
    	}
    


  • Mein Tipp: Du gibst bei der Größe 1**,80 und nicht 1.**80 ein.



  • Oh Mann. Da hätt ich eigentlich selber draufkommen können.
    Danke Danke Danke!!!



  • Wobei ichs genau so bisher gemacht hab, aber andersrum funktionierts. Nochmal vielen Dank


Anmelden zum Antworten