X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fsrc%2Fpascal%2FARITHM.PS;fp=sw%2Fsrc%2Fpascal%2FARITHM.PS;h=4ff3d1a392521c8d25b7212f095091a3a954b5a8;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/src/pascal/ARITHM.PS b/sw/src/pascal/ARITHM.PS new file mode 100644 index 0000000..4ff3d1a --- /dev/null +++ b/sw/src/pascal/ARITHM.PS @@ -0,0 +1,47 @@ +PROGRAM ARITHMETIK(INPUT, OUTPUT); + VAR W: REAL; + +FUNCTION ZIFFER(Z: CHAR): BOOLEAN; + BEGIN ZIFFER := ("0"<=Z) AND (Z<="9") END; + +FUNCTION AUSDRUCK: REAL; +VAR Z: CHAR; + FUNCTION FAKTOR: REAL; + VAR W: INTEGER; + BEGIN + READ(Z); WRITE(Z); + IF ZIFFER(Z) + THEN BEGIN W := 0; + REPEAT W := 10*W + ORD(Z) - ORD("0"); + READ(Z); WRITE(Z) + UNTIL NOT (ZIFFER(Z)); + FAKTOR := W + END + ELSE IF Z = "(" + THEN BEGIN FAKTOR := AUSDRUCK; + READ(Z); WRITE(Z) + END + END; + + FUNCTION TERM: REAL; + VAR W: REAL; + BEGIN W := FAKTOR; + WHILE (Z="*") OR (Z="/") DO + IF Z = "*" THEN W := W*FAKTOR + ELSE W := W/FAKTOR; + TERM := W + END; + + BEGIN + W := TERM; + WHILE (Z="+") OR (Z="-") DO + IF Z = "+" THEN W := W + TERM + ELSE W := W - TERM; + AUSDRUCK := W + END; + +BEGIN +REPEAT WRITE(" ");WRITELN(AUSDRUCK:7:3); + READLN +UNTIL EOF +END.