Autor Beitrag
01Detlef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 85



BeitragVerfasst: So 01.09.02 16:42 
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!
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Di 03.09.02 20:17 
Also ein paar Dinge kannst Dir wirklich sparen:
ausblenden 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?
ausblenden 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

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."