if-Bedingung; größte von fünf Zahlen



  • Hi !

    Ich möchte ein Programm schreiben, das fünf Zahlen einliest und die größte sowie die kleinste eingegebene Zahl ausspukt.
    Das Ganze darf nur mit Hilfe von Schleifen und if-Bedingungen passieren.Die Array-Problematik oder sonstige Sachen sollen hier mal außen vor gelasssen werden.
    Ich habe da schon ein kleines Progrämmchen entworfen; aber es haut irgendwie nicht hin.Hier mal die entscheidene Stelle:

    float einnahmen=0;
    	float einnahmenMax=0;
    	float einnahmenMin=61000;
    
    	int i=0;          	
    
    for (i=0;i<6;i++)
    	{
    		cout<<"Bitte die Hoehe der Einnahmen eingeben.......: ";
    		cin>>einnahmen;
    
    		if(einnahmen>einnahmenMax)
    			einnahmenMax=einnahmen;
    
    		else
    			if (einnahmen<einnahmenMin)
    				einnahmenMin=einnahmen;
    
    			else
    				einnahmen=einnahmen;
    
    	}
    

    Also ich dachte mir halt, daß wenn eine neue Zahl eingelesen wird, die neue Zahl mit den vorherigen Zahlen verglichen wird.Ist die Zahl höher, wird ihr Wert in einnahmenMax gespeichert, ist ihr Wert niedriger, wird er in einnahmenMin gespeichert.
    Das klappt eigentlich auch ganz gut.Das Problem ist nur, daß wenn ich fünf Zahlen eingebe und zufälligerweise die erste eingegebene Zahl ist bereits die kleinste (z.B. folgende Eingaben: 10,20,30,40,50), dann speichert er die 10 ja in einnahmenMax und nicht in einnahmenMin, da "if(einnahmen>einnahmenMax)" ja auf jeden Fall TRUE ist.Denn einnahmenMax hat bei Schleifenbeginn ja lediglich den Wert Null.
    Ich weiß einfach nicht wie ich das machen kann.
    Ich hoffe, daß ich mein Problem einigermaßen verständlich beschrieben habe und mir jemand den entscheidenen Tip geben kann.Ich werde sonst noch wahnsinnig.

    Achja: die fünf Zahlen dürfen nicht in fünf eigenen Variablen gespeichert werden und dann direkt miteinander verglichen werden.

    Thx and greetz.



  • if (einnahmen>einnahmenMax)
    {
      einnahmenMax=einnahmen;
    }
    if (einnahmen<einnahmenMin)
    {
      einnahmenMin=einnahmen;
    }
    

    Das wars schon! 🙂



  • Moin !

    Da sage ich mal ein ganz großes 'Danke' für die schnelle Antwort.
    Irgendwie freue ich mich, daß das Problem jetzt gelöst ist.Aber irgendwie zweifele ich auch ein wenig an mir, daß ich darauf nicht selbst gekommen bin.Naja, aller Anfang ist schwer.

    Auf jeden Fall nochmal danke und tschö...



  • Jeder fängt mal klein an 🙂 Nichts zu danken...



  • Hallo!
    Wieso verwendest du float Datentypen und keine int oder unsigned long int Datentypen, wenn du ganz gewöhnliche Zahlen einlesen willts?

    mfg CSS



  • Moinsen !

    Ich besuche gerade so einen kleinen ProgrammierKurs; und da war halt die Aufgabenstellung ein Programm zu entwickeln, das die kleinste und größte Zahl ausspukt.
    Und da es im gegebenen Beispiel um die Einnahmen von Hotels ging, muß ich davon ausgehen, daß auch Zahlen mit Nachkommawerten eingegeben werden.
    Daher habe ich vorsorglich mal float-Werte genommen.

    greetz.



  • dann hättest du vorsorglich aber gleich long float alias double nehmen sollen, denn einenahmen können auch mal außerhalb des von float erreichbaren bereichs lieben 😉



  • oder vorsorglich long double... Aber wenn er double noch nicht kannte, warum sollte er das nehmen?



  • Moin!
    Er wird doch wohl vor der if-Bedingung die Datentypen gelernt haben!
    Außerdem ist long double sinnlos, da eigentlich alle Compiler für double und long double gleich viel Speicher reservieren!

    mfg CSS



  • CSS schrieb:

    Moin!
    Er wird doch wohl vor der if-Bedingung die Datentypen gelernt haben!
    Außerdem ist long double sinnlos, da eigentlich alle Compiler für double und long double gleich viel Speicher reservieren!

    mfg CSS

    Woher nimmst du die Weisheit?
    Übrigens, wenn ich mal meinen Senf dazugebe um vollends unverständlich zu machen: ich würde gleich ne unlimited prcision Klasse nehmen 😃



  • Hi,

    CSS schrieb:

    Moin!
    Er wird doch wohl vor der if-Bedingung die Datentypen gelernt haben!
    Außerdem ist long double sinnlos, da eigentlich alle Compiler für double und long double gleich viel Speicher reservieren!

    mfg CSS

    es wurde aber long float alias double vorgeschlagen und nicht long double. 😉

    frosh:
    einnahmen=einnahmen;
    Dass dieser Aufruf irgendwie witzlos ist, wäre die aber bestimmt auch eingefallen. 😛
    Und dann wird daraus praktisch der andere Code.

    MfG Eisflamme



  • Moin !

    @freshman22:
    Die Hauptaufgabenstellung des Programms lag halt darin, die größte und kleinste Zahl herauszufiltern.
    Da es relativ wahrscheinlich ist, daß auch Fließkommawerte eingegeben werden, habe ich halt float benutzt.Das Programm muß aber nicht alle Eventualitäten abdecken, da es wie gesagt hauptsächlich um die if-Bedingung geht.Es ist ja nicht für die Praxis geschrieben (denn dann hätte ich noch tausend andere Sachen berücksichtigen müssen).Daher habe ich mal auf double verzichtet.

    @Mis2com:
    Yo, daß "einnahmen=einnahmen;" nicht wirklich Sinn macht weiß ich nun auch.
    Bin vorher halt vorher fälschlicherweise davon ausgegangen, daß auf eine if-Bedingung auf jeden Fall ein else folgen muß, daher diese unsinnige Anweisung.

    Die Lösung lag aber letztendlich darin, daß ich nicht eine verschachtelte if-Bedingung erstelle, sondern wie von Lars Hupel beschrieben einfach zwei simple if-Bedingungen hintereinanderlege.
    Und darauf kam es an.

    greetz.


Anmelden zum Antworten