10 ! FRACCY.BAS FRACTION CYCLE GENERATOR 20 ! BYTE NOV '85 P.434-6 MAP1 NUMER,F MAP1 DENOM,F MAP1 NEW'REMAIN,S,3,"YES" MAP1 DIGIT,F,,1 MAP1 DIVIDEND,F MAP1 EXACT,S,3,"" MAP1 N,F MAP1 D,F SIGNIFICANCE 11 30 PRINT TAB(-1,0) PRINT "FRACTION CYCLE GENERATOR" 40 PRINT 50 PRINT "THIS PROGRAM CALCULATES THE CYCLE OF REPEATING DECIMALS" PRINT "FOR POSITIVE FRACTIONS. ANSWERS ARE PRINTED AS #.##_##..." PRINT "WHERE THE NUMBERS BETWEEN '_' AND '...' ARE REPEATED INFINITELY." PRINT PRINT 100 INPUT "ENTER THE FRACTION'S NUMERATOR ";N:NUMER=ABS(N) 110 INPUT "ENTER THE FRACTION'S DENOMINATOR ";D:DENOM=ABS(D) 130 DIM TERM(DENOM),REMAIN(DENOM) 150 TERM(1)=INT(NUMER/DENOM) 170 REMAIN=NUMER-TERM(1)*DENOM:REMAIN(REMAIN)=1 200 NEW'REMAINDER: 220 DIGIT=DIGIT+1 230 DIVIDEND=10*REMAIN 240 TERM(DIGIT)=INT(DIVIDEND/DENOM) 250 REMAIN=DIVIDEND-TERM(DIGIT)*DENOM 270 IF REMAIN=0 THEN EXACT="YES":REMAIN(REMAIN)=DIGIT 290 IF REMAIN(REMAIN)=0 THEN REMAIN(REMAIN)=DIGIT+1 ELSE NEW'REMAIN="NO" 300 IF NEW'REMAIN="YES" GOTO NEW'REMAINDER 320 PRINT NUMER;"/";DENOM;"="; 340 PRINT TERM(1);". "; 360 FOR I=2 TO REMAIN(REMAIN)-1 370 PRINT USING "#";TERM(I); 380 NEXT I 400 IF EXACT<>"YES" THEN PRINT "_"; 420 FOR I=REMAIN(REMAIN) TO DIGIT 430 PRINT USING "#";TERM(I); 440 NEXT I 460 IF EXACT<>"YES" THEN PRINT "...":PRINT:PRINT "THE CYCLE LENGTH IS ";DIGIT-REMAIN(REMAIN)+1 480 IF EXACT="YES" THEN PRINT:PRINT:PRINT "THIS IS A NON-REPEATING DECIMAL." 490 END