0 REM ********************************* 1 REM * * 2 REM * BERECHNUNG PERIODISCHER * 3 REM * DEZIMALBRUECHE * 4 REM * * 5 REM * BERNHARD FILPE * 6 REM * LANGGASSE 28 * 7 REM * 6733 HASSLOCH * 8 REM * * 9 REM ********************************* 10 POKE53280,6:POKE53281,6:PRINTCHR$(147),CHR$(14),CHR$(8) 20 PRINT"[194]ERECHNUNG PERIODISCHER [196]EZIMALBRUECHE" 30 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 40 PRINT"[197]INGABEBEISPIEL:" 45 PRINT" [192][192][192]" 50 PRINT"[218]U BERECHNEN: 0.76351" 60 PRINT"[197]INGABE : 0.76351 [204]AENGE 3" 70 PRINT"" 80 INPUT"[196]EZIMALBRUCH : ";X$ 90 INPUT"[204]AENGE DER [208]ERIODE: ";L$ 100 L=VAL(L$):IFL<>INT(L)ORL<1THENER$="[197]INGABE DER [208]ERIODE FALSCH":GOTO2000 105 IF VAL(X$)=0THENER$="[198]ALSCHE [197]INGABE":GOTO2000 110 REM TEST AUF KORREKTE EINGABE 120 XL=LEN(X$) 130 FOR I=1TOXL 140 T$=MID$(X$,I,1):T=VAL(T$) 150 IF(T=>1)AND(T<=9)THENFL=1:GOTO180 160 IF T$="0"ANDFL=0THEN NU=NU+1:GOTO180 165 IF T$="0"THEN180 170 IF T$="."ANDPF=0THENFL=1:PF=1:PK=I:GOTO180 175 ER$="[198]ALSCHE [197]INGABE":EL=I:GOTO2000 180 NEXT 200 IF FL THEN X$=MID$(X$,NU+1):PK=PK-NU 210 XL=LEN(X$) 220 IF PF=0THENER$="[196]EZIMALPUNKT FEHLT":GOTO2000 230 IF L>XL-PKTHENER$="[198]ALSCHE [208]ERIODENANGABE":GOTO2000 250 PRINT"[147][194]ERECHNUNG PERIODISCHER [196]EZIMALBRUECHE" 260 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 270 PRINT"[196]EZIMALBRUCH : ";:IFPK=1THENPRINT"0"; 275 PRINTX$ 280 PRINT"[204]AENGE DER [208]ERIODE : ";L$ 290 PRINT 300 REM BERECHNUNG 310 N(1)=10^(XL-L-PK) 320 IF PK=1THENV$=MID$(X$,2,XL-L-1):GOTO337 330 V$=MID$(X$,1,PK-1):VL=LEN(V$) 335 V$=V$+MID$(X$,PK+1,XL-VL-1-L) 337 Z(1)=VAL(V$) 340 N(2)=10^(XL-PK) 350 Z(2)=VAL(MID$(X$,XL-L+1)):IFZ(2)=0THENER$="[196]EZIMALBRUCH TRIVIAL":GOTO2000 360 N(3)=1-10^(-L):Z(3)=1 400 GOSUB3000 410 GOSUB4000:PRINT 420 IF Z(1)=0THEN 450 430 G1=Z(1):G2=N(1):GOSUB5000:REM GGT 440 Z(1)=Z(1)/GG:N(1)=N(1)/GG 450 Z(2)=Z(2)*Z(3) 460 N(2)=N(2)*N(3) 510 G1=Z(2):G2=N(2):GOSUB5000:REM GGT 520 Z(2)=Z(2)/GG:N(2)=N(2)/GG 530 GOSUB3000 540 IF Z(1)<>0THENGOSUB4300 550 IF Z(1)=0THENGOSUB4200:END 555 PRINT 560 G1=N(1):G2=N(2):GOSUB5000 570 GG=N(1)*N(2)/GG:REM KGV 580 Z(1)=Z(1)*GG/N(1) 590 Z(2)=Z(2)*GG/N(2) 600 N(2)=GG:Z(2)=Z(1)+Z(2) 610 G1=Z(2):G2=N(2):GOSUB5000 620 Z(2)=Z(2)/GG:N(2)=N(2)/GG 630 GOSUB3000:GOSUB4200 700 END 2000 REM FEHLERANZEIGE 2010 PRINT" ";ER$;" " 2015 IF EL=0THEN2030 2017 PRINT"";X$:IF EL=1THENPRINT"^":GOTO2030 2020 FORJ=1TOI-1:PRINT" ";:NEXT:PRINT"^" 2030 FOR W=1TO1000:GETA$:IFA$=""THEN NEXT 2040 RUN 3000 REM AUSGABE DER ERRECHNETEN WERTE 3005 Z(1)=INT(Z(1)):Z(2)=INT(Z(2)):N(1)=INT(N(1)):N(2)=INT(N(2)) 3010 Z1$=STR$(Z(1)):N1$=STR$(N(1)) 3020 Z2$=STR$(Z(2)):N2$=STR$(N(2)) 3030 Z3$="1":N3$=STR$(N(3)) 3040 L1=LEN(Z1$):IF L1LEN(Z1$)THENZ1$=" "+Z1$:GOTO3070 3080 IF L1>LEN(N1$)THENN1$=" "+N1$:GOTO3080 3090 IF L2>LEN(Z2$)THENZ2$=" "+Z2$:GOTO3090 3100 IF L2>LEN(N2$)THENN2$=" "+N2$:GOTO3100 3110 IF L3>LEN(Z3$)THENZ3$=" "+Z3$:GOTO3110 3120 N3$="0"+MID$(N3$,2) 3130 RETURN 4000 PRINT" ";Z1$;" ";Z2$;" ";Z3$ 4010 PRINT"= "; 4020 FORI=1TOL1:PRINT"[192]";:NEXT:PRINT" + ";:FORI=1TOL2:PRINT"[192]";:NEXT:PRINT" * "; 4030 FOR I=1TOL3:PRINT"[192]";:NEXT:PRINT 4040 PRINT" ";N1$;" ";N2$;" ";N3$ 4050 RETURN 4100 PRINT" ";Z2$;" ";Z3$ 4110 PRINT"= "; 4120 FORI=1TOL2:PRINT"[192]";:NEXT:PRINT" * "; 4130 FOR I=1TOL3:PRINT"[192]";:NEXT:PRINT 4140 PRINT" ";N2$;" ";N3$ 4150 RETURN 4200 PRINT" ";Z2$ 4210 PRINT"= "; 4230 FOR I=1TOL2:PRINT"[192]";:NEXT:PRINT 4240 PRINT" ";N2$ 4250 RETURN 4300 PRINT" ";Z1$;" ";Z2$ 4310 PRINT"= "; 4320 FORI=1TOL1:PRINT"[192]";:NEXT:PRINT" + "; 4330 FOR I=1TOL2:PRINT"[192]";:NEXT:PRINT 4340 PRINT" ";N1$;" ";N2$ 4350 RETURN 5000 REM GGT 5010 G1=INT(G1):G2=INT(G2) 5020 IF G120 THEN G1=G1-INT(Q-10)*G2 5050 IF G1=G2THENGG=G1:RETURN 5060 IF G1>G2THENG1=INT(G1-G2):GOTO5050 5070 G2=INT(G2-G1):GOTO5050