1 REM SAVE"Percentage" 2 REM Save on EDUCATION Disc 3 REM Save under $.MATHS 4 REM PUBLIC DOMAIN 10 REM PERCENT 20 REM (c) D.J. Aldous, with assistance from Stuart Keeley, November 1986. 30 MODE4 40 PROC_LOGO 50 MODE7 60 VDU12,23;8202;0;0;0; 70 I=INKEY(50) 80 PRINTTAB(10,11);CHR$131;CHR$141;"P E R C E N T":PRINTTAB(10,12);CHR$131;CHR$141;"P E R C E N T" 90 PRINTTAB(10,14);CHR$134;"by D.J. Aldous" 100 I=INKEY(400) 110 CLS 120 PRINT 130 PROC_CENTRE("%",131) 140 PRINT'; 150 PRINT"This program is designed for those who wish to learn about percentages and who wish to make percentage calculations." 160 PRINT'"Examples are given of each of the three different basic percentage calculations." 170 PRINT'CHR$(130);" Different types of calculation are" 180 PRINTCHR$(130);" colour-coded";CHR$(135);"WHITE,";CHR$(131);"YELLOW";CHR$(130);"or";CHR$(134);"BLUE" 190 PRINT' 200 PROC_CENTRE("Results appear in RED",129) 210 PROC_CONTINUE 220 CLS 230 PRINT' 240 PROC_CENTRE("The program covers the following :",130) 250 PRINT''" S Simple Percentages" 260 PRINTCHR$(131);"C Percentage Change" 270 PRINTCHR$(134);"P Profit and Markup (or 'Margin')" 280 PRINT''; 290 PROC_CENTRE("Which type of calculation do you want?",130) 300 PRINT' 310 VDU23;29194;0;0;0; 320 REPEAT 330 PRINTCHR$(130);" Enter"CHR$(135);"S";CHR$(130);"or";CHR$(131);"C";CHR$(130);"or";CHR$(134);"P" 340 ch$=GET$ 350 UNTIL ch$="S" OR ch$="C" OR ch$="P" OR ch$="s" OR ch$="c" OR ch$="p" : CLS 360 IF ch$="S" OR ch$="s" THEN PROC_S ELSE IF ch$="C" OR ch$="c" THEN PROC_C ELSE PROC_P 370 380 END 390 400 DEFPROC_S 410 VDU12,23;8202;0;0;0; 420 PROC_S_HEAD 430 PROC_S_EX 440 PROC_CONTINUE 450 PROC_S_HEAD 460 VDU23;29194;0;0;0; 470 PRINT' 480 PROC_CENTRE("Which one do you want to calculate ?",130) 490 PRINT' 500 REPEAT 510 PROC_CENTRE("Enter A, B or P",130) 520 CHOICE$=GET$ 530 UNTIL CHOICE$="A" OR CHOICE$="B" OR CHOICE$="P" OR CHOICE$="a" OR CHOICE$="b" OR CHOICE$="p" : CLS : PROC_S_HEAD 540 IF CHOICE$="A" OR CHOICE$="a" THEN PROC_S_ONE ELSE IF CHOICE$="B" OR CHOICE$="b" THEN PROC_S_TWO ELSE PROC_S_THREE 550 PROC_AGAIN 560 ENDPROC 570 580 590 DEFPROC_S_HEAD 600 PRINT'; 610 PROC_CENTRE(" SIMPLE PERCENTAGE",135) 620 PROC_CENTRE(" ______ __________",135) 630 PRINT' 640 PRINT"A First Number (Base Number)" 650 PRINT"B Second Number" 660 PRINT"P Percentage that B is of A" 670 ENDPROC 680 690 DEFPROC_S_EX 700 PRINT' 710 PROC_CENTRE("Example 1 :",135) 720 PRINT"The price of a tin of smoked oysters is 60p (A). VAT of 9p (B) is added. What is the percentage rate of VAT (P)?" 730 PRINT'" P = B/A * 100 %" 740 PRINT" = 9/60 * 100 %" 750 PRINT" = 15 %" 760 PRINT' 770 PRINT"This formula may also be used to find A or B." 780 ENDPROC 790 800 DEFPROC_C 810 VDU12,23;8202;0;0;0; 820 PROC_C_HEAD 830 PROC_C_EX 840 PROC_CONTINUE 850 PROC_C_HEAD 860 VDU23;29194;0;0;0; 870 PRINT' 880 PROC_CENTRE("Which one do you want to calculate ?",130) 890 PRINT' 900 REPEAT 910 PROC_CENTRE("Enter O or N or C",130) 920 SELECT$=GET$ 930 UNTIL SELECT$="O" OR SELECT$="N" OR SELECT$="C" OR SELECT$="o" OR SELECT$="n" OR SELECT$="c" : CLS : PROC_C_HEAD 940 IF SELECT$="O" OR SELECT$="o" THEN PROC_C_ONE ELSE IF SELECT$="N" OR SELECT$="n" THEN PROC_C_TWO ELSE PROC_C_THREE 950 PROC_AGAIN 960 ENDPROC 970 980 DEFPROC_C_HEAD 990 PRINT'; 1000 PROC_CENTRE("PERCENTAGE CHANGE",131) 1010 PROC_CENTRE("__________ ______",131) 1020 PRINT'; 1030 PRINTCHR$(131);"O Original Value" 1040 PRINTCHR$(131);"N New Value" 1050 PRINTCHR$(131);"C Percentage Change" 1060 ENDPROC 1070 1080 DEFPROC_C_EX 1090 PRINT' 1100 PROC_CENTRE("Example 2 :",135) 1110 PRINT"During 1980 the US dollar was worth 43p";CHR$(131);"(O).";CHR$(135);"In early 1985 it was worth 96p"CHR$(131);"(N)." 1120 PRINT"What is the";CHR$(131);"Percentage Change";CHR$(131);"(C)";CHR$(135);"?" 1130 PRINT'" ";CHR$131;"C";CHR$135;"= 100*(N-O)/O" 1140 PRINT" = 100*(96-43)/43" 1150 PRINT" = 123.3%" 1160 PRINT' 1170 PRINT"This formula may also be used to find ";CHR$(131);"O";CHR$(135);"or";CHR$(131);"N." 1180 ENDPROC 1190 1200 1210 DEFPROC_P 1220 VDU12,23;8202;0;0;0; 1230 PROC_P_HEAD 1240 PROC_P_EX 1250 PROC_CONTINUE 1260 PROC_P_HEAD 1270 PROCpmnote 1280 PROC_CONTINUE 1290 PROC_P_HEAD 1300 VDU23;29194;0;0;0; 1310 PRINT' 1320 PROC_CENTRE("Which one do you want to calculate ?",130) 1330 PRINT' 1340 REPEAT 1350 PROC_CENTRE("Enter P or M",130) 1360 select$=GET$ 1370 UNTIL select$="P" OR select$="M" OR select$="p" OR select$="m" : CLS : PROC_P_HEAD 1380 IF select$="P" OR select$="p" THEN PROC_P_ONE ELSE PROC_P_TWO 1390 PROC_AGAIN 1400 ENDPROC 1410 1420 DEFPROC_P_HEAD 1430 PRINT'; 1440 PROC_CENTRE("PROFIT AND MARKUP",134) 1450 PROC_CENTRE("______ ___ ______",134) 1470 PRINTTAB(3,4);CHR$(134);"The relationship between -" 1480 PRINTCHR$(134);"P Gross Profit and" 1490 PRINTCHR$(134);"M Markup, or 'Margin'" 1500 ENDPROC 1510 1520 DEFPROC_P_EX 1530 PRINT'; 1540 PROC_CENTRE("Example 3 :",135) 1550 PRINT"A man buys a car and then sells it. If he makes a";CHR$(134);"profit (P)";CHR$(135);"of 20% (the sale price less the cost price, as a percentage of the";CHR$(134);"SALE";CHR$(135);"price), what was" 1560 PRINT"his percentage Markup ? (";CHR$(134);"Markup (M)";CHR$(135);"is the sale price less the cost price as a percentage of the";CHR$(134);"COST";" price)." 1570 PRINT" ";CHR$134;"M";CHR$135;"= (100*P)/(100-P)" 1580 PRINT" = (100*20)/(100-20)" 1590 PRINT" = 25%" 1600 PRINT'; 1610 PRINT"This formula may also be used to find";CHR$134;"P." 1620 ENDPROC 1630 1640 DEFPROC_S_ONE 1650 PRINT' 1660 REPEAT 1670 PRINTCHR$(130)"Enter B ";CHR$(135);:INPUT B; 1680 UNTIL B>0 1690 PRINT'; 1700 REPEAT 1710 PRINTCHR$(130)"Enter P ";CHR$(135);:INPUT P; 1720 UNTIL P>0 1730 A=(B*100)/P 1740 PRINT' 1750 PRINT"First Number = ";CHR$(129);A 1760 PROC_AGAIN 1770 ENDPROC 1780 1790 DEFPROC_S_TWO 1800 PRINT' 1810 REPEAT 1820 PRINTCHR$(130)"Enter A ";CHR$(135);:INPUT A; 1830 UNTIL A>0 1840 PRINT'; 1850 REPEAT 1860 PRINTCHR$(130)"Enter P ";CHR$(135);:INPUT P; 1870 UNTIL P>0 1880 B=(A*P)/100 1890 PRINT' 1900 PRINT"Second Number = ";CHR$(129);B 1910 PROC_AGAIN 1920 ENDPROC 1930 1940 DEFPROC_S_THREE 1950 PRINT' 1960 REPEAT 1970 PRINTCHR$(130)"Enter A ";CHR$(135);:INPUT A; 1980 UNTIL A>0 1990 PRINT'; 2000 REPEAT 2010 PRINTCHR$(130)"Enter B ";CHR$(135);:INPUT B; 2020 UNTIL B>0 2030 P=(B/A)*100 2040 PRINT' 2050 PRINT"B is";CHR$(129);P;CHR$(135);"% of A" 2060 PROC_AGAIN 2070 ENDPROC 2080 2090 DEFPROC_C_ONE 2100 LOCAL c% 2110 PRINT' 2120 REPEAT 2130 PRINTCHR$(130)"Enter N ";CHR$(135);:INPUT N; 2140 UNTIL N>0 2150 PRINT'; 2160 REPEAT 2170 PRINTCHR$(130)"Enter C ";CHR$(135);:INPUT C$; 2180 c%=ASC(C$) 2190 UNTIL c%>47 AND c%<58 OR c%=45 OR c%=46 2200 C=VAL(C$) 2210 O=N/((C/100)+1) 2220 PRINT' 2230 PRINTCHR$(131);"Original Value was ";CHR$(129);O 2240 PROC_AGAIN 2250 ENDPROC 2260 2270 DEFPROC_C_TWO 2280 LOCAL c% 2290 PRINT' 2300 REPEAT 2310 PRINTCHR$(130)"Enter O ";CHR$(135);:INPUT O; 2320 UNTIL O>0 2330 PRINT'; 2340 REPEAT 2350 PRINTCHR$(130)"Enter C ";CHR$(135);:INPUT C$; 2360 c%=ASC(C$) 2370 UNTIL c%>47 AND c%<58 OR c%=45 OR c%=46 2380 C=VAL(C$) 2390 N=((C/100)*O)+O 2400 PRINT' 2410 PRINTCHR$(131);"New Value is ";CHR$(129);N 2420 PROC_AGAIN 2430 ENDPROC 2440 2450 DEFPROC_C_THREE 2460 PRINT' 2470 REPEAT 2480 PRINTCHR$(130)"Enter O ";CHR$(135);:INPUT O; 2490 UNTIL O>0 2500 PRINT'; 2510 REPEAT 2520 PRINTCHR$(130)"Enter N ";CHR$(135);:INPUT N; 2530 UNTIL N>=0 2540 C=(N-O)/O*100 2550 PRINT' 2560 PRINTCHR$(131);"Percentage change is";CHR$(129);C;CHR$(131);"%" 2570 PROC_AGAIN 2580 ENDPROC 2590 2600 DEFPROC_P_ONE 2610 LOCAL m% 2620 PRINT' 2630 REPEAT 2640 PRINTCHR$(130)"Enter M ";CHR$(135);:INPUT M$; 2650 m%=ASC(M$) 2660 UNTIL m%>47 AND m%<58 OR m%=45 OR m%=46 2670 M=VAL(M$) 2680 P=(M*100)/(M+100) 2690 PRINT' 2700 PRINTCHR$(134);"Percentage Profit =";CHR$(129);P;CHR$(134);"%" 2710 PROC_AGAIN 2720 ENDPROC 2730 2740 DEFPROC_P_TWO 2750 LOCAL p% 2760 PRINT' 2770 REPEAT 2780 PRINTCHR$(130)"Enter P ";CHR$(135);:INPUT P$; 2790 p%=ASC(P$) 2800 UNTIL p%>47 AND p%<58 OR p%=45 OR p%=46 2810 P=VAL(P$) 2820 M=(P*100)/(100-P) 2830 PRINT' 2840 PRINTCHR$(134);"Percentage Markup =";CHR$(129);M;CHR$(134);"%" 2850 PROC_AGAIN 2860 ENDPROC 2870 2880 2890 DEFPROC_AGAIN 2900 REPEAT 2910 PRINTTAB(6,23);CHR$(130);"Another calculation ? (Y/N) " 2920 A$=GET$ 2930 UNTIL A$="Y" OR A$="y" OR A$="N" OR A$="n" 2940 IF A$="Y" OR A$="y" THEN GOTO 220 2950 IF A$="N" OR A$="n" THEN PROC_FINITO 2960 ENDPROC 2970 2980 DEFPROC_CONTINUE 2990 REPEAT 3000 PRINTTAB(7,23);CHR$(130);"Press SPACE to continue" 3010 UNTIL GET$=" " 3020 CLS 3030 ENDPROC 3040 3050 DEFPROC_CENTRE(T$,Y%) 3060 LOCAL Q% 3070 Q% = 20-(LEN(T$)/2) 3080 PRINTCHR$(Y%);TAB(Q%);T$ 3090 ENDPROC 3100 3110 DEFPROC_FINITO 3120 CLS 3130 TIT$="Bye Bye" : C%=131 3140 PROC_TITLE(TIT$,C%) 3150 END : ENDPROC 3160 3170 DEFPROCpmnote 3180 PRINT'' 3190 PRINT"Note that a profit of 100% means that the selling price was";CHR$(134);"totally";CHR$(135);"profit. i.e. the buying price was zero !" 3200 PRINT'"The program will therefore not accept ";CHR$(134);"profit";CHR$(135);"input figures equalling or exceeding 100%, since this calls for a";CHR$(134);"Markup";CHR$(135);"of Infinity % !" 3210 ENDPROC 3220 3230 DEFPROC_TITLE(T$,Y%) 3240 VDU12,23;8202;0;0;0; 3250 CLS 3260 LOCAL Q% 3270 Q% = 18-(LEN(T$)/2) 3280 FOR I%=11 TO 12:PRINTTAB(Q%,I%);CHR$(Y%);CHR$(141);T$:NEXT:VDU30 3290 T=TIME:REPEAT UNTIL TIME-T>300 3300 CLS 3310 VDU23;29194;0;0;0; 3320 ENDPROC 3330 3340 DEFPROC_LOGO 3350 VDU12,23;8202;0;0;0; 3360 VDU19,128,135;0; 3370 VDU19,1,2;0; 3380 PLOT4,160,128 3390 PLOT5,160,896 3400 PLOT5,1120,896 3410 PLOT5,1120,128 3420 PLOT5,160,128 3430 PLOT4,162,132 3440 PLOT5,162,892 3450 PLOT5,1118,892 3460 PLOT5,1118,132 3470 PLOT5,162,132 3480 PLOT0,2,0 3490 PLOT5,164,892 3500 PLOT4,1116,892 3510 PLOT5,1116,132 3520 PLOT0,0,4 3530 PLOT5,164,136 3540 PLOT5,164,888 3550 PLOT5,1116,888 3560 PLOT5,1116,136 3570 PLOT0,-2,0 3580 PLOT5,1114,888 3590 PLOT4,168,888 3600 PLOT5,168,136 3610 VDU29,600;700; 3620 PLOT4,0,0 3630 RESTORE 3640 READ X%,Y% 3650 PLOT4,X%,Y% 3660 PROC_DELAY(5) 3670 READ X%,Y% 3680 PLOT85,X%,Y% 3690 PROC_DELAY(5) 3700 P%=0 3710 FOR P%=1 TO 24 3720 PLOT4,0,0 3730 READ X%,Y% 3740 PLOT85,X%,Y% 3750 PROC_DELAY(5) 3760 READ X%,Y% 3770 PLOT85,X%,Y% 3780 PROC_DELAY(5) 3790 NEXT 3800 PLOT4,0,0 3810 READ X%,Y% 3820 PLOT85,X%,Y% 3830 PROC_DELAY(5) 3840 PLOT4,-60,-175 3850 P%=0 3860 RESTORE 4080 3870 FOR P%=1TO9 3880 READ X%,Y% 3890 PLOT5,X%,Y% 3900 NEXT 3910 PLOT4,150,-198 3920 P%=0 3930 RESTORE 4090 3940 FORP%=1TO8 3950 READ X%,Y% 3960 PLOT 5,X%,Y% 3970 NEXT 3980 PLOT4,4,-150 3990 PLOT5,24,-175 4000 PLOT5,50,-212 4010 PLOT5,72,-168 4020 PLOT4,-94,-400 4030 PLOT5,236,-400 4040 PLOT0,-4,0 4050 PLOT5,-94,-400 4060 DATA0,125,25,112,50,100,75,87,100,90,125,100,150,110,175,100,200,94,225,75,250,25,250,0,250,-25,237,-50,248,-75,272,-100,284,-125,276,-150,220,-175,200,-188,175,-192,150,-198,125,-200,100,-205,75,-175,50,-182,25,-164,0,-150 4070 DATA-25,-156,-50,-175,-75,-216,-100,-226,-125,-226,-150,-218,-175,-188,-180,-150,-184,-125,-186,-100,-180,-75,-170,-50,-160,-25,-140,0,-140,25,-150,50,-136,75,-125,80,-100,90,-75,112,-50,124,-25,128,0,125 4080 DATA-20,-200,0,-225,12,-250,24,-275,24,-300,24,-325,24,-350,24,-375,18,-400 4090 DATA120,-225,110,-250,104,-275,104,-300,104,-325,104,-350,116,-375,120,-400 4100 PRINTTAB(13,24);"B R O A D O A K" 4110 PROC_DELAY(500) 4120 VDU30 4130 VDU23;29194;0;0;0; 4140 ENDPROC 4150 DEFPROC_DELAY(T%) 4160 N%=TIME:REPEAT:UNTIL TIME-N%>T% 4170 ENDPROC