#1 4. November 2006 Geht das auch einfacher? Zunächst einmal möchte ich mich entschuldigen wenn der text etwas wirr ist aber ich habe zur zeit einen gebrochenen finger und somit fällt das tippen etwas schwer... Also ich habe letztens im Rahmen eines Programmes den Wert einer Variable vom ordinalen Typ getestet.DAfür dachte ich mir wäre case am Besten zu nutzen. Es ging um Rabatte etc, also dass zwischen 0 und 999 kein Rabatt gibty und ab 1000€ bis 5000€ dann 2% etc. allerdings hatte ich dann das problem, dass case ja keine kommazahlen annimmt da der wert der variable die geprüft wird nur integer sein kann. ich bin dann schließlich dazu gekommen, wenn eine kommazahl eingegeben wird, sagen wir mal 999,5 , dann wird das ,5 abgeschnitten. der test für case in welchem bereich sich die zahl befindet wird dann nur mit dem 999 durchgeführt. die berechnung der prozente anschließend wieder mit 999,5. ich hatte es zuvor mit runden versucht allerdings runde er ab 0,5 ja auf und dann würden 999,5 schon zu 1000 gehören. das sollte nicht. hier der quelltext wie ich es realisiert habe: Code: // Einlesen von dem Einkaufspreis in die Variable vBetrag vWahl := trunc(vBetrag); case vWahl of 0..999 : vRabatt:= 0; 1000..5000 : vRabatt:= vBetrag * 0.03; 5001..10000 : vRabatt:= vBetrag * 0.05; else vRabatt:= vBetrag * 0.07; end; // vGesamt:= vBetrag - vRabatt // Ausgabe von vGesamt Meine frage ist nun ob das ganze auch einfacher realisierbar ist möglicherweise mit einem anderen befehl als case. + Multi-Zitat Zitieren
#2 4. November 2006 AW: Geht das auch einfacher? machs doch mit if: Code: if vWahl < 1000 then begin vRabatt:=0; end; if (( vWahl>= 1000) and (vWahl<5000)) then begin vRabatt:=0.03; end; if vWahl >= 5000 then begin vRabatt:=0.05; end; so in der art (kannst du ja noch verändern) + Multi-Zitat Zitieren
#3 4. November 2006 AW: Geht das auch einfacher? Du kannst auch eine Fließkommazahl mit ceil() auf oder mit floor() abrunden, also auf die nächsthöhere oder nächstniedrigere Integer-Zahl. Schau mal in die Online-Hilfe, bin mir bei den Funktionsnamen nich so sicher. + Multi-Zitat Zitieren
#4 4. November 2006 AW: Geht das auch einfacher? Code: if vWahl < 1000 then vRabatt:=0 else if (( vWahl>= 1000) and (vWahl<5000)) then vRabatt:=0.03 else if vWahl >= 5000 then vRabatt:=0.05; begin / end kann man sich sparen, da man jeweils nur eine weitere Anweisung tätigt. vor "else" in delphi kein semikolon. + Multi-Zitat Zitieren
#5 4. November 2006 AW: Geht das auch einfacher? und btw.. ob case oder if ist in diesem fall ja wohl völlig egal + Multi-Zitat Zitieren
#6 7. November 2006 AW: Geht das auch einfacher? Multiplizier einfach vWahl mit 100, somit hast du statt € nun Cent-Beträge. Nach der Rabatt-Berechnung einfach wieder als Ausgabe durch 100 teilen um halt €-Betrag wieder hinzubekommen. ciao - Apfelbusch + Multi-Zitat Zitieren