Der hochmoderne Snackautomat von dem im Chat die Rede war:
Unten erlaubt er sich alle möglichen SpäßeCode: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.
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![]()



Zitieren



