Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | PROGRAM ARITHMETIK(INPUT, OUTPUT); |
2 | VAR W: REAL; | |
3 | ||
4 | FUNCTION ZIFFER(Z: CHAR): BOOLEAN; | |
5 | BEGIN ZIFFER := ("0"<=Z) AND (Z<="9") END; | |
6 | ||
7 | FUNCTION AUSDRUCK: REAL; | |
8 | VAR Z: CHAR; | |
9 | FUNCTION FAKTOR: REAL; | |
10 | VAR W: INTEGER; | |
11 | BEGIN | |
12 | READ(Z); WRITE(Z); | |
13 | IF ZIFFER(Z) | |
14 | THEN BEGIN W := 0; | |
15 | REPEAT W := 10*W + ORD(Z) - ORD("0"); | |
16 | READ(Z); WRITE(Z) | |
17 | UNTIL NOT (ZIFFER(Z)); | |
18 | FAKTOR := W | |
19 | END | |
20 | ELSE IF Z = "(" | |
21 | THEN BEGIN FAKTOR := AUSDRUCK; | |
22 | READ(Z); WRITE(Z) | |
23 | END | |
24 | END; | |
25 | ||
26 | FUNCTION TERM: REAL; | |
27 | VAR W: REAL; | |
28 | BEGIN W := FAKTOR; | |
29 | WHILE (Z="*") OR (Z="/") DO | |
30 | IF Z = "*" THEN W := W*FAKTOR | |
31 | ELSE W := W/FAKTOR; | |
32 | TERM := W | |
33 | END; | |
34 | ||
35 | BEGIN | |
36 | W := TERM; | |
37 | WHILE (Z="+") OR (Z="-") DO | |
38 | IF Z = "+" THEN W := W + TERM | |
39 | ELSE W := W - TERM; | |
40 | AUSDRUCK := W | |
41 | END; | |
42 | ||
43 | BEGIN | |
44 | REPEAT WRITE(" ");WRITELN(AUSDRUCK:7:3); | |
45 | READLN | |
46 | UNTIL EOF | |
47 | END. |