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