Der hochmoderne Snackautomat von dem im Chat die Rede war:
Code:
PROGRAM Snackautomat;
TYPE WareARRAY=ARRAY[1..4,1..12] OF CHAR;
MuenzeARRAY=ARRAY[1..6] OF REAL;
CONST Ware:WareARRAY=('Mars','Snickers','Twix','Duplo');
Muenze:MuenzeARRAY=(0.05,0.10,0.20,0.50,1.00,2.00);
VAR Eingabe,Einwurf:INTEGER;
Preis,Summe,Rest:REAL;
Abbruch:BOOLEAN;
BEGIN
Abbruch:=FALSE;
WRITELN('Bitte w„hlen sie ein Produkt mit');
WRITELN('1:Mars(1.50E), 2:Snickers(1.70E), 3: Twix(1.80E), 4:Duplo(0.70E)');
READLN(Eingabe);
IF Eingabe IN [1..4] THEN
BEGIN
Case Eingabe OF
1:Preis:=1.50;
2:Preis:=1.70;
3:Preis:=1.80;
4:Preis:=0.70
END;
WRITELN('Bitte werfen Sie' ,Preis,' Euro ein. Der Automat akzeptiert nur 5Cent bis 2Euro Mnzen');
WRITELN('1:5Cent, 2:10Cent, 3:20Cent, 4:50Cent, 5:1Euro, 6:2Euro');
Summe:=0.00;
REPEAT
WRITELN('Verbleibend: ',Preis-Summe:1:2,' Euro');
READLN(Einwurf);
IF Eingabe IN [1..6] THEN
BEGIN
Summe:=Summe+Muenze[Einwurf];
WRITELN(Summe:1:2);
END
ELSE
Abbruch:=TRUE
UNTIL (Summe>=Preis) OR Abbruch;
Rest:=Summe-Preis;
WRITELN('Ausgabe ',Ware[Eingabe]);
WRITELN(Rest:1:2,' Euro Rckgeld');
REPEAT
IF Rest>=1 THEN
BEGIN
WRITELN('Ausgabe ',Muenze[5]:1:2,' Euro');
Rest:=Rest-1
END;
IF Rest>=0.50 THEN
BEGIN
WRITELN('Ausgabe ',Muenze[4]:1:2,' Euro');
Rest:=Rest-0.50
END;
IF Rest>=0.20 THEN
BEGIN
WRITELN('Ausgabe ',Muenze[3]:1:2,' Euro');
Rest:=Rest-0.20
END;
IF Rest>=0.10 THEN
BEGIN
WRITELN('Ausgabe ',Muenze[2]:1:2,' Euro');
Rest:=Rest-0.10
END;
IF Rest>=0.05 THEN
BEGIN
WRITELN('Ausgabe ',Muenze[1]:1:2,' Euro');
Rest:=Rest-0.05
END
UNTIL Rest=0
END
ELSE
WRITELN('Falsche Eingabe')
END.
Unten erlaubt er sich alle möglichen Späße
Wenn Ich zum Beispiel mit 1,30 Euronen Rückegeld starte dann gehts erst gut los. Der Euro wird abgezogen, dann 20 Cent, wenns dann aber darum geht die 10 Cent auch noch abzuziehen womit dann die Abbruchbedingung erfüllt wäre kommt da aus 0,1-0,1 auseinmal 1,0231815395E-12 raus