c08e22bb |
1 | C APFELMAENNCHEN-PROGRAMM, 30.NOV.2004 PHILIPP HACHTMANN |
2 | C |
3 | C SENSE-SWITCH 1: WENN GESETZT, KONFIGURATION |
4 | C SENSE-SWITCH 2: WENN GESETZT, KEINE AUSGABE |
5 | C |
6 | C |
7 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
8 | COMPLEX C,Z,CTMP |
9 | C |
10 | REAL |
11 | + XIN1,XIN2,YIN1,YIN2,LOWX,LOWY,HIGHX,HIGHY, |
12 | + XSTEP,YSTEP,MAXVAL,TEMP, |
13 | + X,Y |
14 | C |
15 | INTEGER |
16 | + MAXI,COUNT,WIDTH, |
17 | + CR,LF,POSI,NEGA, I, N |
18 | C |
19 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
20 | C KONSTANTE WERTE |
21 | C |
22 | C (32=LEERZEICHEN, 88=X) |
23 | DATA |
24 | + CR/13/, |
25 | + LF/10/, |
26 | + POSI/79/, |
27 | + NEGA/32/, |
28 | + WIDTH/70/, |
29 | + MAXI/60/, |
30 | + MAXVAL/2.0/, |
31 | + XIN1/-1.45/,XIN2/0.45/, |
32 | + YIN1/-1.00/,YIN2/1.00/ |
33 | C |
34 | C |
35 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
36 | C |
37 | C |
38 | C |
39 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
40 | C STARTMELDUNG |
41 | 100 WRITE(1,10) |
42 | 10 FORMAT(39HMANDELBROT-DEMO, 01.DEC.2004 HACHTI :-) ) |
43 | C |
44 | C |
45 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
46 | C EINGABEN ANNEHMEN |
47 | C |
48 | N=1 |
49 | CALL SSWTCH(N,I) |
50 | IF(I.EQ.1) GO TO 150 |
51 | C |
52 | WRITE(1,11) |
53 | READ (1,16) XIN1 |
54 | WRITE(1,12) |
55 | READ (1,16) XIN2 |
56 | WRITE(1,13) |
57 | READ (1,16) YIN1 |
58 | WRITE(1,14) |
59 | READ (1,16) YIN2 |
60 | WRITE(1,15) |
61 | READ (1,17) MAXI |
62 | |
63 | C |
64 | 11 FORMAT(9H X FROM: ) |
65 | 12 FORMAT(9H TO: ) |
66 | 13 FORMAT(9H Y FROM: ) |
67 | 14 FORMAT(9H TO: ) |
68 | 15 FORMAT(9H MAXIT: ) |
69 | 16 FORMAT(F12.0) |
70 | 17 FORMAT(I6) |
71 | C |
72 | C |
73 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
74 | C STARTWERTE ENDGUELTIG FESTLEGEN |
75 | C |
76 | C EVENTUELL STARTWERTE TAUSCHEN |
77 | C |
78 | CCCCCC WENN XIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN |
79 | 150 I F(XIN2.GT.XIN1) GO TO 200 |
80 | TEMP = XIN1 |
81 | XIN1 = XIN2 |
82 | XIN2 = TEMP |
83 | C |
84 | CCCCCC WENN YIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN |
85 | 200 IF(YIN2.GT.YIN1) GO TO 201 |
86 | TEMP = YIN1 |
87 | YIN1 = YIN2 |
88 | YIN2 = TEMP |
89 | C |
90 | CCCCCC WERTE UEBERNEHMEN |
91 | 201 LOWX = XIN1 |
92 | HIGHX = XIN2 |
93 | LOWY = YIN1 |
94 | HIGHY = YIN2 |
95 | C |
96 | CCCCCC SCHRITTWEITEN AUSRECHNEN |
97 | XSTEP = (HIGHX-LOWX)/FLOAT(WIDTH) |
98 | YSTEP = 2.0 * XSTEP |
99 | C |
100 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
101 | C STARTWERTE AUSGEBEN |
102 | C |
103 | N=2 |
104 | CALL SSWTCH(N,I) |
105 | IF(I.EQ.1) GO TO 299 |
106 | WRITE (1,20) |
107 | 20 FORMAT (9HSETTINGS:) |
108 | WRITE (1,30) LOWX, HIGHX |
109 | 30 FORMAT (12HX-WERTE VON ,1F8.5,5H BIS ,1F8.5) |
110 | WRITE (1,40) LOWY, HIGHY |
111 | 40 FORMAT (12HY-WERTE VON ,F8.5,5H BIS ,F8.5) |
112 | WRITE (1,50) MAXI, MAXVAL, XSTEP, YSTEP, WIDTH |
113 | 50 FORMAT ( 4HMAX:,I3, |
114 | + 8H MAXVAL:,F8.5, |
115 | + 7H XSTEP:,F8.5, |
116 | + 7H YSTEP:,F8.5, |
117 | + 7H WIDTH:,I2) |
118 | CCCCCC ZEILENVORSCHUB |
119 | WRITE (1,55) |
120 | 55 FORMAT (1H0) |
121 | C |
122 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
123 | C EIGENTLICHE BERECHNUNG |
124 | C |
125 | CCCCCC EINSTIEG IN BERECHNUNG |
126 | 299 X=LOWX |
127 | Y=HIGHY |
128 | C |
129 | CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT |
130 | 300 C=CMPLX(X,Y) |
131 | COUNT=0 |
132 | Z=(0.0,0.0) |
133 | C |
134 | CCCCCC HIER DER ITERIERTE TEIL |
135 | 400 CTMP=Z*Z |
136 | Z=CTMP+C |
137 | IF ((CABS(Z)).GE.MAXVAL) GO TO 410 |
138 | COUNT=COUNT+1 |
139 | IF (COUNT.GE.MAXI) GO TO 420 |
140 | GO TO 400 |
141 | C |
142 | CCCCCC PUNKT DURCHGEFALLEN |
143 | 410 CALL PCHAR(NEGA) |
144 | GO TO 500 |
145 | C |
146 | CCCCCC PUNKT HAT MAXI ERREICHT |
147 | 420 CALL PCHAR(POSI) |
148 | C |
149 | C |
150 | CCCCCC NEUEN PUNKT MACHEN |
151 | 500 X = X + XSTEP |
152 | CCCCCC ZEILE NOCH NICHT VOLL? |
153 | IF (X.LT.HIGHX) GO TO 300 |
154 | CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN |
155 | X = LOWX |
156 | CALL PCHAR(CR) |
157 | CALL PCHAR(LF) |
158 | CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN |
159 | Y=Y-YSTEP |
160 | IF (Y.GT.LOWY) GO TO 300 |
161 | C |
162 | CCCCCC HIER IST DAS BILD FERTIG. |
163 | WRITE(1, 60) |
164 | 60 FORMAT (6HFERTIG) |
165 | C |
166 | CCCCCC KURZE PAUSE, DANN NEUSTART |
167 | PAUSE 7 |
168 | GO TO 100 |
169 | END |
170 | $0 |