PROGRAM PLOTKREUZKURVE(INPUT,OUTPUT); CONST H0=640; VAR N,H,I,R: INTEGER; PROCEDURE ANFANG; BEGIN WRITELN("H", H DIV 2 + 100 :1, "@", H + H DIV 2 + 100 :1, "AKI") END (* ANFANG *); PROCEDURE STRECKE(R: INTEGER); BEGIN CASE R MOD 4 OF 0: WRITELN(H:1,"A@J"); 1: WRITELN(H:1,"@AJ"); 2: WRITELN(H:1,"Q@J"); 3: WRITELN(H:1,"PAJ") END END (* STRECKE *); PROCEDURE SCHLUSS; VAR I: INTEGER; BEGIN WRITELN("H3000@100AK"); FOR I := 1 TO 384 DO WRITE(" "); WRITELN END (* SCHLUSS *); PROCEDURE KREUZ(I,R: INTEGER); BEGIN IF I>0 THEN BEGIN KREUZ(I-1,R); STRECKE(R+1); STRECKE(R); KREUZ(I-1,R+1); STRECKE(R); KREUZ(I-1,R-1); STRECKE(R); STRECKE(R-1); KREUZ(I-1,R) END ELSE STRECKE(R) END (* KREUZ *); BEGIN WHILE NOT EOF DO BEGIN READ(N); H := H0; FOR I := 1 TO N DO H := H DIV 2; ANFANG; FOR R := 0 TO 3 DO BEGIN KREUZ(N,R); STRECKE(R+1); STRECKE(R) END; SCHLUSS END END.