Probleme bei einfachem Programm zur Volumenberchnung



  • Weshalb gibt mir mein Programm immer Grenzwert überschritten aus?(auch wenn dieser nicht überschritten ist?

    // 
    #include <iostream>
    #include "berechnungen.h"
    using namespace std;
    
    void main ()
    {
    	float volumen;
    	float eingaberadius,eingabehöhe;
    	cout<< "geben sie die Höhe und den Radius an"<<endl;
    	cin>>eingabehöhe>>eingaberadius;
    	volumen=volumenberechnung(eingabehöhe,eingaberadius);
    
    	if (volumen>grenzwertberech(eingabehöhe));	
    	cout<<"Grenzwert ueberschritten"<<endl;
    	cout<<"Das Volumen beträgt:"<<volumen<<endl;
    cin.get()	;
    cin.get()	;
    
    }
    

    Ausgelagerte Funktionen:

    #include <iostream>
    using namespace std ;
    
    float volumenberechnung(float höhe,float radius)
    	{
    		const float PI=3.14;
    		float vol;
    		float grundfl;
    		grundfl=PI*radius*radius;
    		vol=grundfl*höhe;
    		return (vol);
    }
    
    float grenzwertberech(float höhe)
    {return (3*höhe);
    }
    

    Gruß



  • Hi,
    das Semikolon direkt nach deiner if-Bedingung ist quasi deine if-Anweisung. D.h. dein Compiler denkt, dass die Zeile

    cout<<"Grenzwert ueberschritten"<<endl;
    

    nichts mehr mit dem if zu tun hat und immer auszuführen sei.

    Viele Grüße, Chris



  • Danke!



  • tschussell schrieb:

    Danke!

    Noch eine Anmerkung: Alle Vergleiche (Ob gleichheit/größer/kleiner ist egal) zweier Fließkommazahlen (float, double...) können aus Sicht des Anwenders Fehlerhaft sein (Da Fließkommazahlen nicht genau sind, und sich zwei, aus rein logischer Sicht, gleiche Zahlen in den Nachkommastellen marginal unterscheiden können).

    Sprich: Wenn zwei unterschiedliche Berechnungen am Schluss aus Anwendersicht 3 ergeben sollten, kann es dennoch sein, das sie sich minimal unterscheiden. Daher verwendet man hier meist Deltavergleiche (z.B. über "fabs(a, b) < schwellenwert").

    Dies solltest du nur im Hinterkopf behalten wenn einmal ein Vergleich nicht das ergibt, was du erwartet hast.

    cu André


Log in to reply