[Delphi] Geht das auch einfacher?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Jacer, 4. November 2006 .

Schlagworte:
  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.
     
  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)
     
  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.
     
  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.
     
  5. 4. November 2006
    AW: Geht das auch einfacher?

    und btw.. ob case oder if ist in diesem fall ja wohl völlig egal
     
  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
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.