Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - If - Einbindung
01Detlef - So 01.09.02 16:42
Titel: If - Einbindung
Hi
Ich habe folgenden Quelltext und habe dazu eine Frage:
Wie kann ich jetzt die Bedingung in die Rechnung einbringen? So dass, entweder das mit 0.25 oder mit 1 multipliziert wird? Und wenn das gelingt habe ich den wert, der 25% entspricht, aber ich möchte dann noch das diese von SummePro abgezogen werden!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| PROGRAM Kassenzettel; USES CRT; CONST Oliven = 7.86; Paprika = 2.98; Gurken = 3.67; Mwst = 0.14; Rabatt = 0.25;
VAR AnOliven, AnPaprika, AnGurken,SummeOl, SummePa, SummeGu, SummePro,Rab : Real ; Antwort : Char;
PROCEDURE Eingabe; BEGIN CLRSCR; WRITELN('Gewicht der Oliven:'); READLN(AnOliven); WRITELN('Gewicht der Paprikas:'); READLN(AnPaprika); WRITELN('Gewicht der Gurken:'); READLN(AnGurken); WRITELN('Bedigung'); READLN(Antwort);
END;
PROCEDURE Bedingung; BEGIN IF Antwort = 'j' then Rab:= SummePro * Rabatt ; END ELSE Rab := SummePro * 1;
PROCEDURE Rechnung; BEGIN SummeOl:= AnOliven * Oliven; SummePa:= AnPaprika * Paprika; SummeGu:=AnGurken* Gurken; SummePro:= SummeOl+SummePa+SummeGu; END;
PROCEDURE Ausgabe; BEGIN CLRSCR; WRITELN('SUMME DER OLIVEN'); WRITELN(SummeOl:8:2); WRITELN('Summe der Paprikas'); WRITELN(SummePa:8:2); WRITELN('Summe der Gurken'); WRITELN(SummeGu:8:2); WRITELN('_____________________________'); WRITELN('Summe der Produkte'); WRITELN(SummePro:8:2); END;
BEGIN CLRSCR; Eingabe; Bedingung; Rechnung; Ausgabe; READLN; END. |
Detlef
patmann2001 - So 01.09.02 20:44
Hi
Ich würde die Procedure Bedingung weglassen.
Am Ende der Procedure Rechnung würde ich folgens einfügen:
Quelltext
1: 2: 3: 4:
| IF Antwort = 'J' then SummePro:= SummePro * 0,75 ; END ELSE SummePro := SummePro * 1; |
Wurde also als Antwort ein 'j' eingegeben, dann wird das Ergebniss um 25% kleiner.
Noch ein paar Tips zur Eingabe.
Schreibe nie direkt in Variablen die nur nummerische Eingaben verwalten können. Sonst kommt es zu einem Programmambsturz wenn der Benutzer mal Buchstaben eintippt. Um das zu verhindern mache folgendes:
Zitat: |
Var zahl:STRING;
kontrolle:INTEGER;
...
Repeat
WRITELN('Gewicht der Oliven:');
READLN(zahl);
VAL(zahl,AnOliven,kontrolle);
UNTIL kontrolle = 0;
...
|
Dann die Abfrage der Bedingung (Variable Antwort)
Ich würde nach der Eingabe von Antwort folgende Zeile einfügen:
Zitat: |
antwort := UPCASE(antwort);
|
Dadurch werden immer Großbuchstaben in antwort stehen, egal was der Benutzer drückt.
cu Patmann
Wolff68 - Di 03.09.02 20:17
Titel: Re: If - Einbindung
Also ein paar Dinge kannst Dir wirklich sparen:
Quelltext
1: 2:
| END ELSE Rab := SummePro * 1; |
Soviel ich weis ändert sich nichts an einem Wert, wenn man ihn mit 1 multipliziert, oder? Also kannst das auch genausogut weglassen.
Wie übrigends die gesamte Prozedur Bedingung.
Diese eine If-Zeile kannst auch genausogut unten reinschreiben.
Ach ja: Es wäre auch günstig ERST SummePro berechnen zu lassen BEVOR Du da Prozente abrechnen willst. Macht sonst irgendwie wenig Sinn, oder?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| BEGIN CLRSCR; Eingabe; Bedingung; // Hier werden 25% von einem unbestimmten Wert berechnet Rechnung; // Und hier wird dann SummePro (ohne %) berechnet Ausgabe; READLN; END. |
OK, und wegen dem Abziehen: Wenn Du die Konstante nicht auf 0.75 setzen willst kannst zB auch
IF Antwort = 'J' then SummePro := SummePro * (1 - Rabatt); verwenden. Ist besser wenn später der Rabatt mal geändert werden soll. (In ein paar Monaten bist sonst überzeugt, daß Du bisher immer 75% Rabatt eingeräumt hast...) :-)
Viele Grüße,
Wolfgang
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!