home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1982-11-02 | 6.3 KB | 145 lines |
- 5 REM This program is MATH
- 10 CLS:KEY OFF:CLEAR 100:GOSUB 100:GOSUB 1000
- 20 GOSUB 2000:RUN "menu"
- 50 RUN "menu"
- 100 GOSUB 59980
- 110 DEFSTR N:DIM NUMBER(15)
- 115 DB$=CHR$(31)+CHR$(29):D$=CHR$(31):B2$=STRING$(2,29):B3$=B2$+CHR$(29)
- 120 NUMBER(1)=" POINTCSRLIN"+DB$+"CSRLIN"+DB$+"CSRLIN"+D$+B2$+"<0xDF!><0xDF!><0xDF!>"
- 130 NUMBER(2)="POINT<0xDF!><0xDF!><0xDF!>POINT"+D$+B2$+"POINT<0xDF!>"+D$+B2$+B2$+"POINT<0xDF!>"+D$+B3$+"<0xDF!><0xDF!><0xDF!><0xDF!><0xDF!>"
- 140 NUMBER(3)="<0xDF!><0xDF!><0xDF!><0xDF!>CSRLIN"+DB$+B2$+"POINTPOINTCSRLIN"+DB$+"CSRLIN"+DB$+B2$+B2$+"<0xDF!><0xDF!><0xDF!><0xDF!><0xDF!>"
- 150 NUMBER(4)=" POINTCSRLIN"+DB$+B3$+"POINTCSRLINPOINTCSRLINPOINT"+D$+B2$+"CSRLIN"+DB$+"<0xDF!>"
- 160 NUMBER(5)="CSRLIN<0xDF!><0xDF!><0xDF!><0xDF!>"+DB$+B2$+B2$+"CSRLINPOINTPOINTPOINT"+D$+"CSRLIN"+DB$+B2$+B2$+"<0xDF!><0xDF!><0xDF!><0xDF!>"
- 170 NUMBER(6)=" POINT<0xDF!>"+DB$+B2$+"CSRLINPOINTPOINTPOINT"+D$+B2$+B2$+"CSRLIN"+D$+"<0xDF!><0xDF!><0xDF!>"+CHR$(30)+"CSRLIN"+D$
- 180 NUMBER(7)="<0xDF!><0xDF!><0xDF!><0xDF!>CSRLIN"+D$+B2$+"POINT<0xDF!>"+DB$+B2$+"POINT<0xDF!>"+D$+B2$+"<0xDF!>"
- 190 NUMBER(8)="POINT<0xDF!><0xDF!><0xDF!>POINT"+DB$+B2$+B2$+"<0xDF!>POINTPOINTPOINT<0xDF!>"+DB$+B2$+B2$+"CSRLIN"+D$+"<0xDF!><0xDF!><0xDF!>"+CHR$(30)+"CSRLIN"+D$
- 200 NUMBER(9)="POINT<0xDF!><0xDF!><0xDF!>POINT"+DB$+B2$+B2$+"<0xDF!>POINTPOINTPOINTCSRLIN"+D$+B2$+"POINT<0xDF!>"+DB$+B2$+"<0xDF!>"
- 210 NUMBER(10)="POINT<0xDF!><0xDF!><0xDF!>POINT"+DB$+B2$+B2$+"CSRLIN CSRLIN"+DB$+B2$+B2$+"CSRLIN CSRLIN"+D$+B2$+B2$+"<0xDF!><0xDF!><0xDF!>"
- 220 NUMBER(11)=D$+" POINTCSRLINPOINT"+D$+B2$+"<0xDF!>"
- 230 NUMBER(12)=D$+" POINTPOINTPOINT"
- 240 NUMBER(13)=D$+"<0xDF!>POINT<0xDF!>"+DB$+B2$+"<0xDF!> <0xDF!>"
- 250 NUMBER(14)=" POINT"+D$+B2$+"POINTPOINTPOINT"+D$+B2$+"POINT"
- 260 NUMBER(15)=" POINTPOINTPOINT"+D$+D$+B3$+"POINTPOINTPOINT"
- 270 NUMBER(0)=" "+DB$+B2$+B2$+" "+DB$+B2$+B2$+" "+DB$+B2$+B2$+" "
- 300 C$(1)="RIGHT":C$(2)="CORRECT":C$(3)="ABSOLUTELY":C$(4)="GOOD GOING":C$(5)="YOU'RE DOING OK!":C$(6)="I KNEW YOU'D GET THAT ONE"
- 990 RETURN
- 995 CLS:FOR I=1 TO 20:LOCATE I,67:PRINT"THIS IS A TEST";:NEXT I:END
- 1000 KEY OFF:COLOR 0,7:LOCATE 1,34:PRINT " Math Program "
- 1010 COLOR 7,0:LOCATE 3,1:PRINT "This program will drill you on simple math problems. You may select the"
- 1020 PRINT "type(s) of problems which will be presented. The operations available include:"
- 1030 LOCATE 6,10:COLOR 15:PRINT "1";:COLOR 7:PRINT" - Addition"
- 1040 LOCATE 7,10:COLOR 15:PRINT "2";:COLOR 7:PRINT" - Subtraction"
- 1050 LOCATE 8,10:COLOR 15:PRINT "3";:COLOR 7:PRINT" - Multiplication"
- 1060 LOCATE 9,10:COLOR 15:PRINT "4";:COLOR 7:PRINT" - Division"
- 1070 LOCATE 10,10:COLOR 15:PRINT "5";:COLOR 7:PRINT" - Addition and Subtraction
- 1080 LOCATE 11,10:COLOR 15:PRINT "6";:COLOR 7:PRINT" - Multiplication and Division"
- 1090 LOCATE 12,10:COLOR 15:PRINT "7";:COLOR 7:PRINT" - Addition, Subtraction, Multiplication and Division"
- 1100 LOCATE 14,1:PRINT "Enter the number for the type(s) of operations desired - ";
- 1110 GOSUB 59990
- 1120 IF INSTR("1234567",IKEY$)=0 THEN 1110
- 1130 L1=VAL(IKEY$):LOCATE 14,1:PRINT STRING$(75,32)
- 1140 LOCATE 14,1:PRINT"Enter the level of difficulty desired ";:COLOR 15:PRINT"(1-10)";:COLOR 7:PRINT" - ";
- 1150 INPUT L:IF L<1 OR L>10 THEN 1140
- 1160 RETURN
- 2000 GOSUB 3000 'initialize result tally
- 2010 ON L1 GOSUB 4000,5000,6000,7000,8000,9000,10000 'select value
- 2020 GOSUB 11000 'display the problem
- 2030 GOSUB 12000 'accept the answer
- 2040 GOSUB 13000 'evaluate answer & tally results
- 2050 IF R=1 THEN 2010
- 2060 GOSUB 13900 'give final results
- 2070 TIMEOUT=12:GOSUB 59950:RETURN
- 3000 FOR I=1 TO 4
- 3010 S(1,I)=0 'number of consecutive correct responses
- 3020 IF L1=I OR L1=7 OR (L1=5 AND I<3) OR (L1=6 AND I>2) THEN S(2,I)=L ELSE S(2,I)=0 'level of difficulty
- 3030 S(3,I)=0 'total correct answers
- 3040 NEXT I
- 3050 S=0 'total exercises tried
- 3060 RETURN
- 4000 REM select addition values
- 4010 V1=INT(RND*10*S(2,1)):V2=INT(RND*(10*S(2,1)-V1)):T=1:RETURN
- 5000 REM select subtraction values
- 5010 V1=INT(RND*10*S(2,2)):V2=INT(RND*V1):T=2:RETURN
- 6000 REM select multiplication values
- 6010 V1=INT(RND*5*S(2,3)):IF V1=0 THEN 6010 ELSE V2=INT((RND*10*S(2,3))/V1):T=3:RETURN
- 7000 REM select division values
- 7010 V1=INT(RND*10*S(2,4)):V2=INT(RND*V1):IF V1=0 OR V2=0 THEN 7010 ELSE IF INT(V1/V2)<>V1/V2 THEN 7010
- 7020 T=4:RETURN
- 8000 REM select addition or subtraction values
- 8010 IF RND<0.5 THEN 4000 ELSE 5000
- 9000 REM select multiplication or division values
- 9010 IF RND<0.5 THEN 6000 ELSE 7000
- 10000 REM select addition, subtraction, multiplication or division values
- 10010 ON INT(RND*10)+1 GOTO 4000,5000,6000,7000,4000,5000,6000,7000,4000,5000:STOP
- 11000 REM display the problem
- 11010 CLS
- 11020 V1$=STR$(V1):V2$=STR$(V2)
- 11025 IF V1=0 THEN LOCATE 11,16:PRINT NUMBER(10);:GOTO 11050
- 11030 IF LEN(V1$)>2 THEN LOCATE 11,10:PRINT NUMBER(VAL(MID$(V1$,2,1)));
- 11035 IF VAL(RIGHT$(V1$,1))=0 THEN LOCATE 11,16:PRINT NUMBER(10);:GOTO 11050
- 11040 LOCATE 11,16:PRINT NUMBER(VAL(RIGHT$(V1$,1)));
- 11050 LOCATE 11,27:PRINT NUMBER(T+10);
- 11060 IF V2=0 THEN LOCATE 11,41:PRINT NUMBER(10);:GOTO 11100
- 11070 IF LEN(V2$)>2 THEN LOCATE 11,35:PRINT NUMBER(VAL(MID$(V2$,2,1)));
- 11080 IF VAL(RIGHT$(V2$,1))=0 THEN LOCATE 11,41:PRINT NUMBER(10);:GOTO 11100
- 11090 LOCATE 11,41:PRINT NUMBER(VAL(RIGHT$(V2$,1)));
- 11100 LOCATE 11,53:PRINT NUMBER(15);
- 11110 RETURN
- 12000 REM accept the answer
- 12010 LOCATE 18,31,,0,13:COLOR 15:PRINT"The answer is - ";:INPUT A$:COLOR 7
- 12020 A=VAL(A$):LOCATE ,,,13
- 12030 IF A=0 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 12070
- 12040 IF LEN(A$)>1 THEN LOCATE 11,65:NUMBER=NUMBER(VAL(LEFT$(A$,1))):GOSUB 12500
- 12050 IF VAL(RIGHT$(A$,1))=0 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 12070
- 12060 LOCATE 11,71:NUMBER=NUMBER(VAL(RIGHT$(A$,1))):GOSUB 12500
- 12070 RETURN
- 12500 FOR I=1 TO LEN(NUMBER):PRINT MID$(NUMBER,I,1);:NEXT I:RETURN
- 13000 REM evaluate the answer & tally the results
- 13010 C%=0:ON T GOSUB 13100,13200,13300,13400
- 13020 IF C%=1 THEN GOSUB 13500 ELSE GOSUB 13700
- 13030 LOCATE 25,27:PRINT"Another exercise (";:COLOR 15:PRINT"Y";:COLOR 7:PRINT" or ";:COLOR 15:PRINT"N";:COLOR 7:PRINT")?" ;
- 13040 GOSUB 59990:IF INSTR("ynsYNS",IKEY$)=0 THEN 13040
- 13050 IF IKEY$="y" OR IKEY$="Y" THEN R=1
- 13060 IF IKEY$="n" OR IKEY$="N" THEN R=0
- 13070 IF IKEY$="s" OR IKEY$="S" THEN GOSUB 13900:GOTO 13030
- 13080 RETURN
- 13100 V3=V1+V2:IF A=V3 THEN C%=1
- 13110 RETURN
- 13200 V3=V1-V2:IF A=V3 THEN C%=1
- 13210 RETURN
- 13300 V3=V1*V2:IF A=V3 THEN C%=1
- 13310 RETURN
- 13400 V3=V1/V2:IF A=V3 THEN C%=1
- 13410 RETURN
- 13500 PLAY "mbc16c16c16ge8g"
- 13510 S(1,T)=S(1,T)+1:S(3,T)=S(3,T)+1
- 13520 IF S(1,T)>15 THEN S(1,T)=0:S(2,T)=S(2,T)+1
- 13530 IF S(2,T)>10 THEN S(2,T)=10
- 13540 FOR I=15 TO 25:LOCATE I,1:PRINTSPACE$(79);:NEXT I
- 13550 S=S+1:IX=INT(RND*6)+1
- 13560 LOCATE 20,40-LEN(C$(IX))/2:COLOR 15:PRINT C$(IX):COLOR 7
- 13570 RETURN
- 13700 PLAY "n50n25":S(1,T)=0:S=S+1
- 13705 NUMBER=NUMBER(0):LOCATE 11,65:GOSUB 12500:LOCATE 11,71:GOSUB 12500
- 13710 IF V3=0 THEN LOCATE 11,65:NUMBER=NUMBER(0):GOSUB 12500:LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 13800
- 13720 IF V3>9 THEN LOCATE 11,65:NUMBER=NUMBER(VAL(MID$(STR$(V3),2,1))):GOSUB 12500
- 13730 IF INT(V3/10)=V3/10 THEN LOCATE 11,71:NUMBER=NUMBER(10):GOSUB 12500:GOTO 13800
- 13740 LOCATE 11,71:NUMBER=NUMBER(VAL(RIGHT$(STR$(V3),1))):GOSUB 12500
- 13800 LOCATE 18,28:COLOR 15:PRINT"NOTE THE CORRECT ANSWER":COLOR 7
- 13810 RETURN
- 13900 CLS:LOCATE 12,30:PRINT"CONSECUTIVE DIFFICULTY TOTAL"
- 13910 LOCATE 13,32:PRINT"CORRECT LEVEL CORRECT"
- 13920 LOCATE 14,20:PRINT STRING$(50,"CSRLIN")
- 13930 LOCATE 15,1:PRINT"ADDITION" TAB(20) USING"CSRLIN ## ## ## CSRLIN";S(1,1),S(2,1),S(3,1)
- 13940 LOCATE 16,1:PRINT"SUBTRACTION" TAB(20) USING"CSRLIN ## ## ## CSRLIN";S(1,2),S(2,2),S(3,2)
- 13950 LOCATE 17,1:PRINT"MULTIPLICATION" TAB(20) USING"CSRLIN ## ## ## CSRLIN";S(1,3),S(2,3),S(3,3)
- 13960 LOCATE 18,1:PRINT"DIVISION" TAB(20) USING"CSRLIN ## ## ## CSRLIN";S(1,4),S(2,4),S(3,4)
- 13965 LOCATE 19,20:PRINTSTRING$(50,"CSRLIN")
- 13970 LOCATE 22,30:PRINT USING"Percent Correct = ###";INT(((S(3,1)+S(3,2)+S(3,3)+S(3,4))/S)*100)
- 13980 RETURN
- 59950 TIMEOUT$=TIME$:TIME2=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
- 59960 TIMEOUT$=TIME$:TIME3=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
- 59970 IF TIMEOUT > TIME3 - TIME2 THEN 59960 ELSE RETURN
- 59980 RNDTIME$=TIME$:RNDVAL=VAL(LEFT$(RNDTIME$,2))*120+VAL(MID$(RNDTIME$,4,2))*60+VAL(RIGHT$(RNDTIME$,2)):RANDOMIZE RNDVAL:RETURN
- 59990 IKEY$=INKEY$:IF IKEY$="" THEN 59990 ELSE RETURN
-