-
Notifications
You must be signed in to change notification settings - Fork 11
/
A17_Cirkeldiagrammen.bc3
111 lines (110 loc) · 3.3 KB
/
A17_Cirkeldiagrammen.bc3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
1000 A=100:GOTO20:REM CIRKELDIAGRAM
1010 GOSUB8010:REM UITLEG
1020 GOSUB2010:REM INITIALISEREN
1030 GOSUB7010:REM OVERZICHTSNAAM ERBIJ
1040 GOSUB4010:REM TEKEN DE CIRKEL
1050 GOSUB6010:REM TEKEN DE SEGMENTEN EN ZET DE NAMEN ERBIJ
1060 HO=0.4:VE=0.96:SR$="nog een diagram (j/n)":GOSUB650
1070 GOSUB210
1080 IFIN=74 THEN1000
1090 IFIN<>78 THEN1070
1100 GOTO950:REM EINDE
2000 REM INITIALISEREN
2010 M=0.5:P=3.141592:SO=0
2020 R=0.39:CN=0:X1=M+.75*R*SIN(0):Y1=M-R*COS(0)
2030 SP$=" "
2040 INPUT" Overzichtsnaam ";ZI$
2050 INPUT"aantal segmenten ";N
2060 DIMAA(N),NA$(N)
2070 FORI=1 TON
2080 HO=0:VE=I+2:GOSUB110
2090 PRINT"geef naam ";I;" ";
2100 INPUTNA$(I)
2110 IFLEN(NA$(I))>10 THENNA$(I)=LEFT$(NA$(I),10)
2120 HO=23:GOSUB110
2130 PRINT" ":GOSUB110
2140 INPUT"met waarde ";AA(I)
2150 IFAA(I)<=0 THEN2120
2160 SO=SO+INT(AA(I)*100)/100
2170 NEXTI
2180 FORI=1 TON:AA(I)=AA(I)/SO*P*2:NEXTI
2190 GOSUB600:REM grafisch scherm
2200 RETURN
3000 REM TREK EEN LIJN TUSSEN (X1,Y1) EN (X2,Y2)
3010 HO=X1:VE=Y1:GOSUB620
3020 HO=X2:VE=Y2:GOSUB630
3030 RETURN
4000 REM TEKEN DE CIRKEL
4010 PQ=P/180
4020 HO=X1:VE=Y1:GOSUB620
4030 FORG=4 TO360 STEP4
4040 RD=PQ*G:HO=M+.75*R*SIN(RD):VE=M-R*COS(RD):GOSUB630
4050 NEXTG
4060 RETURN
5000 REM ZET DE NAAM BIJ HET SEGMENT
5010 AN=AN-0.5*AA(I)
5020 X=M+.75*1.1*R*SIN(AN)
5030 Y=M-1.1*R*COS(AN)
5040 IFAN>P THENX=X-LEN(NA$(I))/60
5050 SR$=NA$(I)
5060 HO=X:VE=Y:GOSUB650
5070 PR=INT(50*AA(I)/P+0.5)
5080 X=M+.75*.7*R*SIN(AN)
5090 Y=M-.7*R*COS(AN)-0.025
5100 IFAN<P THENX=X-.025
5110 IFAN>=P THENX=X-.0375
5120 SR=PR:GOSUB300:SR$=SR$+"%"
5130 HO=X:VE=Y:GOSUB650
5140 AN=AN+0.5*AA(I)
5150 RETURN
6000 REM TEKEN HET SEGMENT
6010 AN=0
6020 FORI=1 TON
6030 AN=AN+AA(I)
6040 X1=M:Y1=M
6050 X2=M+.75*R*SIN(AN)
6060 Y2=M-R*COS(AN)
6070 IFN<>1 THEN GOSUB3010:REM LYN TUSSEN (X1,Y1) EN (X2,Y2)
6080 GOSUB5010:REM ZET DE NAAM BIJ HET SEGMENT
6090 NEXTI
6100 RETURN
7000 REM
7010 X=M-LEN(ZI$)/80*320/HG
7020 Y=0
7030 HO=X:VE=Y
7040 SR$=ZI$:GOSUB330:GOSUB650
7050 RETURN
8000 REM UITLEG
8010 HT=HO:VT=VE:SR$="CIRKELDIAGRAM"
8020 GOSUB150:HO=0:VE=2
8030 READUI$:IFUI$="*" THEN8100
8040 IFHO+LEN(UI$)>=HT THENHO=0:VE=VE+2
8050 IFVE<VT-3 THEN8080
8060 HO=0:VE=VT-1:GOSUB110:PRINT"druk een toets":GOSUB210
8070 GOSUB100:HO=0:VE=0
8080 GOSUB110:PRINTUI$:HO=HO+LEN(UI$)+2
8090 GOTO8030
8100 HO=0:VE=VT-1:GOSUB110:PRINT"druk een toets":GOSUB210
8110 GOSUB100:RETURN
25000 DATA"Cirkeldiagram","maakt","van"
25010 DATA"ingetoetste","gegevens","een"
25020 DATA"cirkeldiagram.","Ook","wel","'taart'","genoemd."
25030 DATA"Een","'punt'","zal","een","net","zo"
25040 DATA"groot","percentage","van","het","oppervlak"
25050 DATA"van","de","cirkel","innemen,","als","het"
25060 DATA"bijbehorende","gegeven","van","het","totaal"
25070 DATA"is.","De","namen"
25080 DATA"worden","bij","de","'punten'","gezet.","*"
32000 REM ***********************
32010 REM * *
32020 REM * DOOR EDWIN DE GRAAF *
32030 REM * J. SLUYTERSWEG 32 *
32040 REM * 5645 JD EINDHOVEN *
32050 REM * OP EEN C-64 *
32060 REM * *
32070 REM ***********************
32080 REM
32090 REM TROS-RADIO dd 861217
32100 REM Verzamelcassette-1
32110 REM correctie dd 861229/881006
32120 REM TROS-RADIO dd 890802