home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib27b.dsk
/
PRINT.SCI.NOTE.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
52 lines
10 REM ***********************
20 REM * PRINT.SCI.NOTE *
30 REM * BY GEORGE W. GOTH *
40 REM * COPYRIGHT (C) 1986 *
50 REM * BY MICROSPARC, INC. *
60 REM * CONCORD, MA 01742 *
70 REM ***********************
80 ONERR GOTO 120
90 HOME : HTAB 3: PRINT "PRINT USING SCIENTIFIC NOTATION DEMO"
110 POKE 34,4
120 HOME : VTAB 5: HTAB 3: INPUT "ENTER THE NUMBER: ";X
130 VTAB 7: CALL -958: VTAB 7: HTAB 3: INPUT "ENTER NUMBER OF SIG FIGS: ";P$:P = VAL(P$)
140 IF P > = 1 AND P < = 9 THEN GOTO 190
150 VTAB 7: INVERSE : PRINT " ";: REM 43 SPACES
160 PRINT "NUMBER OF SIG FIGS MUST BE BETWEEN ";: REM 18 SPACES AFTER BETWEEN
170 PRINT "1 AND 9 ": REM 19 SPACES AFTER 9
180 VTAB 21: HTAB 1: NORMAL : PRINT "PRESS <RETURN> TO CONTINUE";: GET Z$: PRINT : GOTO 130
190 GOSUB 260
200 NC$ = STR$(NC): VTAB 10: HTAB (20 -( LEN(Y$) + LEN(NC$) +5)/2): PRINT Y$;" "; CHR$(120);" 10";: VTAB PEEK(37): HTAB PEEK(36) +1: PRINT NC
210 VTAB 14: HTAB 2: PRINT "DO YOU WISH TO ENTER ANOTHER NUMBER": VTAB 16: HTAB 18: PRINT "<";: INVERSE : PRINT "Y";: NORMAL : PRINT ">ES": VTAB 18: HTAB 18: PRINT "<";: INVERSE : PRINT "N";: NORMAL : PRINT ">O"
220 VTAB 20: HTAB 8: PRINT "PLEASE ENTER A LETTER < >";: HTAB PEEK(36) -1: GET T$: PRINT T$
230 IF T$ = "Y" OR T$ = CHR$(221) GOTO 120
240 IF T$ = "N" OR T$ = CHR$(110) THEN POKE 34,0: HOME : VTAB 23: PRINT "] END DEMO": VTAB PEEK(37) -1: END
250 PRINT CHR$(7): GOTO 220
260 REM
270 REM PRINT USING EXPONENTIAL NOTATION
280 REM ENTER WITH: X (THE NUMBER TO BE EXPRESSED)
290 REM P (NUMBER OF SIGNIFICANT FIGURES IN ANSWER)
300 REM
310 REM RETURNS Y$ (NUMBER TRUNCATED TO CORRECT NUMBER OF SIG FIGS)
320 REM NC (VALUE OF THE EXPONENT)
330 REM USES DUMMY VARIABLES X$, X1 AND R
340 REM
350 IF X = 0 THEN Y$ = "0.": IF P >1 THEN FOR I = 1 TO P -1:Y$ = Y$ +"0": NEXT :NC = 0: RETURN
360 IF X = 0 THEN NC = 0: RETURN
370 IF X = 1 THEN Y$ = "1.": IF P >1 THEN FOR I = 1 TO P -1:Y$ = Y$ +"0": NEXT :NC = 0: RETURN
380 IF X = 1 THEN NC = 0: RETURN
390 IF X = -1 THEN Y$ = "-1.": IF P >1 THEN FOR I = 1 TO P -1:Y$ = Y$ +"0": NEXT :NC = 0: RETURN
400 IF X = -1 THEN NC = 0: RETURN
410 X1 = ABS(X):NC = 0
420 IF X1 <9.99999999 THEN X1 = X1 *10:NC = NC -1: GOTO 420
430 IF X1 = >10 THEN X1 = X1/10:NC = NC +1: GOTO 430
440 X$ = STR$(X1): IF LEN(X$) < = P THEN IF MID$ (X$,2,1) < >"." THEN X$ = X$ +".": FOR I = 1 TO P -1:X$ = X$ +"0":NETXI: GOTO 460
450 X$ = STR$(X1): IF LEN(X$) < = P THEN FOR I = 1 TO P -1:X$ = X$ +"0": NEXT I
460 Y$ = MID$ (X$,1,P +1): IF Y$ = "10." THEN Y$ = MID$ (X$,1,4)
470 R = 1: IF ( VAL(X$) - VAL(Y$)) > = 5/10 ^P THEN R = 2: REM R=1 DO NOT ROUND UP, R=2 ROUND UP
480 ON R GOTO 520,490
490 X1 = VAL(Y$) +1/10 ^(P -1)
500 IF X1 = 10 THEN X1 = 1:NC = NC +1
510 GOTO 440
520 IF X <0 THEN Y$ = "-" +Y$
530 RETURN