FLORIDA HIGH SCHOOLS COMPUTING COMPETITION '92 BASIC PROGRAM SOLUTIONS '1.1 ' This program displays the company name: GTEDS. ' PRINT "GGGGG TTTTT EEEEE" PRINT "G T E" PRINT "G GGG T EEEEE DATA SERVICES" PRINT "G G T E" PRINT "GGGGG T EEEEE" '1.2 ' This program will display the company name in a year. ' INPUT "Enter year:"; YEAR IF YEAR < 1920 THEN PRINT "RICHLAND CENTER TELEPHONE COMPANY" ELSE IF YEAR < 1926 THEN PRINT "COMMONWEALTH TELEPHONE COMPANY" ELSE IF YEAR < 1935 THEN PRINT "ASSOCIATED TELEPHONE UTILITIES COMPANY" ELSE IF YEAR < 1959 THEN PRINT "GENERAL TELPHONE CORPORATION" ELSE IF YEAR < 1982 THEN PRINT "GENERAL TELPHONE & ELECTRONICS CORPORATION" ELSE PRINT "GTE CORPORATION" END IF END IF END IF END IF END IF '1.3 ' This program will determine company's ranking in Forbes. ' INPUT "Enter 1991 rank:"; RANK INPUT "Enter number of places:"; PLACES PRINT RANK - PLACES '1.4 ' This program will indent GTE's 6 operations. ' INPUT "Enter number of spaces:"; X PRINT "GTE TELPHONE OPERATIONS" PRINT SPACE$(X); "GTE GOVERNMENT SYSTEMS" PRINT SPACE$(X * 2); "GTE MOBILE COMMUNICATIONS" PRINT SPACE$(X * 3); "GTE INFORMATION SERVICES" PRINT SPACE$(X * 4); "GTE SPACENET" PRINT SPACE$(X * 5); "GTE AIRFONE" '1.5 ' This program will display # of WHOLE YEARS GTEDS existed. ' INPUT "Enter M, Y:"; M, Y IF M < 10 THEN X = 1 ELSE X = 0 PRINT Y - 1967 - X; "YEARS" '1.6 ' This program will center a title and name in a box. ' INPUT "Enter title:"; T$ INPUT "Enter name:"; N$ PRINT STRING$(24, "*") PRINT "*"; SPACE$(22); "*" L = LEN(T$) + LEN(N$) + 1 SP1 = INT((22 - L) / 2) SP2 = (22 - L) - SP1 PRINT "*"; SPACE$(SP1); T$; " "; N$; SPACE$(SP2); "*" PRINT "*"; SPACE$(22); "*" PRINT STRING$(24, "*") '1.7 ' This program will display a 4-line statement for ISOP. ' INPUT "Enter name:"; N$ INPUT "Enter title:"; T$ INPUT "Enter group:"; G$ PRINT N$; " IS A "; T$; " WITHIN THE" PRINT G$; " GROUP AND" PRINT "HAS BEEN SELECTED TO PARTICIPATE IN" PRINT "THE ISOP." '1.8 ' This program will display a dollar sign next to an amount. ' INPUT "Enter amount: "; AMOUNT$ A = VAL(AMOUNT$) IF A >= 2000 THEN PRINT "$2000.00" ELSE PRINT "$"; AMOUNT$ '1.9 ' This program will display an acronym for business words. ' INPUT "Enter words: "; ST$ PRINT LEFT$(ST$, 1); FOR I = 2 TO LEN(ST$) - 1 IF MID$(ST$, I, 1) = " " THEN PRINT MID$(ST$, I + 1, 1); NEXT I '1.10 ' This program will calculate QUALITY hours and minutes. ' INPUT "Enter number of technicians, N:"; N INPUT "Enter number of minutes, M:"; M TOTAL = 50 * 5 * N * M HOURS = INT(TOTAL / 60) MIN = TOTAL - HOURS * 60 PRINT HOURS; "HOURS"; MIN; "MINUTES" '2.1 ' This program will display a speech indented. ' I = 0 WHILE (LINE$(I) > "") OR (I = 0) I = I + 1 INPUT "Enter line:"; LINE$(I) WEND FOR J = 1 TO I - 1 CH$ = MID$(LINE$(J), 1, 1) IF CH$ = "I" THEN PRINT LINE$(J) IF CH$ >= "A" AND CH$ <= "H" THEN PRINT SPACE$(4); LINE$(J) IF VAL(CH$) > 0 THEN PRINT SPACE$(8); LINE$(J) NEXT J '2.2 ' This program will display a number in words. ' DIM WORDS$(27) DATA ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN DATA ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN,SIXTEEN DATA SEVENTEEN,EIGHTEEN,NINETEEN,TWENTY,THIRTY,FOURTY DATA FIFTY,SIXTY,SEVENTY,EIGHTY,NINETY FOR I = 1 TO 27: READ WORDS$(I): NEXT I INPUT "Enter number:"; NUM IF NUM < 20 THEN PRINT WORDS$(NUM): END TENS = INT(NUM / 10) UNITS = NUM - TENS * 10 PRINT WORDS$(18 + TENS); IF UNITS > 0 THEN PRINT "-"; WORDS$(UNITS) '2.3 ' This program will display selected items from a NRD menu. ' DATA "DEMONSTRATED INTEREST IN INFORMATION MANAGMENT." DATA "DEMONSTRATED LEADERSHIP SKILLS." DATA "STRONG GPA/PERFORMANCE HISTORY." DATA "AT LEAST TWO COURSES IN ANY PROGRAMMING LANGUAGE." DATA "INTERNSHIP OR WORK EXPERIENCE." DATA "EFFECTIVE ORAL AND WRITTEN COMMUNICATION SKILLS." DATA "CAREER DEVELOPMENT POTENTIAL." FOR I = 1 TO 7: READ CRIT$(I): NEXT I INPUT "Enter name:"; NAM$ INPUT "Enter degree:"; DEGREE$ FOR I = 1 TO 7 PRINT USING "#. "; I; : PRINT CRIT$(I) NEXT I PRINT INPUT "Select up to 7 items:"; ITEMS$ CLS PRINT NAM$: PRINT DEGREE$ NUM = 0 FOR I = 1 TO 7 I$ = LTRIM$(STR$(I)) IF INSTR(1, ITEMS$, I$) > 0 THEN NUM = NUM + 1 PRINT : PRINT USING "#. "; NUM; : PRINT CRIT$(I) END IF NEXT I '2.4 ' This program will rate a speech. ' DATA SPEECH VALUE,PREPARATION,MANNER,ORGANIZATION DATA OPENING,BODY OF SPEECH,CONCLUSION FOR I = 1 TO 7: READ CAT$(I): NEXT I DATA EXCELLENT,ABOVE AVERAGE,SATISFACTORY DATA SHOULD IMPROVE,MUST IMPROVE FOR I = 1 TO 5: READ VERBAL$(I): NEXT I FOR I = 1 TO 7 PRINT "Enter rating for "; CAT$(I); INPUT ": "; RATING$(I) NEXT I FOR I = 1 TO 7 NUM = 1 WHILE (RATING$(I) <> VERBAL$(NUM)) AND (NUM < 7) NUM = NUM + 1 WEND PRINT CAT$(I); ":"; NUM TOTAL = TOTAL + NUM NEXT I 200 PRINT 210 AVE = TOTAL / 7 220 PRINT USING "AVERAGE NUMERICAL RATING = #.#"; AVE 230 PRINT "SPEECH RATING = "; VERBAL$(INT(AVE + .5)) '2.5 ' This program will format GTEDS MISSION statement. ' DATA "BE THE CUSTOMER-ORIENTED LEADER AND PROVIDER-OF-CHOICE " DATA "OF QUALITY INFORMATION PRODUCTS AND SERVICES IN THE " DATA "TELECOMMUNICATIONS MARKETPLACE AND SELECTED OTHER " DATA "RELATED MARKETS IN SUPPORT OF GTE'S TELOPS GOALS." FOR I = 1 TO 4: READ ST$(I): NEXT I INPUT "Enter N:"; N STATE$ = ST$(1) + ST$(2) + ST$(3) + ST$(4) FOR I = 1 TO LEN(STATE$) CH$ = MID$(STATE$, I, 1) WORD$ = WORD$ + CH$ IF (CH$ = " " OR CH$ = "-" OR CH$ = ".") THEN NUMCH = LEN(LINE$) + LEN(WORD$) IF CH$ = " " THEN NUMCH = NUMCH - 1 IF NUMCH > N THEN PRINT LINE$: LINE$ = WORD$ IF NUMCH <= N THEN LINE$ = LINE$ + WORD$ WORD$ = "" END IF NEXT I PRINT LINE$; WORD$ '2.6 ' This program will change (.) to (?) at end of sentence. ' DATA WHAT,WHY,HOW,WHO,WHERE FOR I = 1 TO 5: READ QUEST$(I): NEXT I INPUT "Enter paragraph:"; PAR$: PRINT FIRSTW = -1 FOR I = 1 TO LEN(PAR$) CH$ = MID$(PAR$, I, 1) IF CH$ = " " AND LEN(FIRSTW$) > 0 THEN FIRSTW = 0 ELSE IF (CH$ = "." OR CH$ = "!" OR CH$ = "?") THEN IF CH$ = "." THEN FOR J = 1 TO 5 IF FIRSTW$ = QUEST$(J) THEN CH$ = "?" NEXT J END IF FIRSTW$ = "": FIRSTW = -1 ELSE IF FIRSTW AND (CH$ <> " ") THEN FIRSTW$ = FIRSTW$ + CH$ END IF END IF PRINT CH$; NEXT I '2.7 ' This program will print names in the office at a beep. ' DATA DAVID,0700,1600 DATA DON,0800,1700 DATA DOUG,0730,1630 DATA GRANDVILLE,1230,2100 DATA JAMES,1130,2200 DATA JIM,0900,1800 DATA JOHN,0700,1600 DATA LINDA,1230,2300 DATA MARIE,0700,1600 DATA MATT,1230,2300 DATA PAULA,0700,1600 DATA ROBERT,0800,1700 DATA SHELLEY,0630,1530 DATA TOM,1100,1930 DIM NAM$(14), START(14), QUIT(14) FOR I = 1 TO 14 READ NAM$(I), START(I), QUIT(I) NEXT I INPUT "Enter time:"; TIME INPUT "Enter day:"; DAY$ FOR I = 1 TO 14 IF (START(I) <= TIME) AND (TIME <= QUIT(I)) THEN IF (DAY$ <> "SUNDAY") AND (DAY$ <> "SATURDAY") THEN INOFFICE = -1 IF (NAM$(I) = "JAMES") AND (DAY$ = "MONDAY") THEN INOFFICE = 0 IF (NAM$(I) = "LINDA") AND (DAY$ = "FRIDAY") THEN INOFFICE = 0 IF (NAM$(I) = "MATT") AND (DAY$ = "MONDAY") THEN INOFFICE = 0 IF INOFFICE THEN NUM = NUM + 1 IF NUM = 1 THEN PRINT NAM$(I); IF NUM > 1 THEN PRINT ", "; NAM$(I); END IF END IF END IF NEXT I IF NUM = 0 THEN PRINT "NONE" '2.8 ' This program will randomly assign titles to a team. ' DATA WILL,DARLENE,JEFF,LIZ,LORI,MARY,PING FOR I = 1 TO 7: READ NAM$(I): NEXT I DATA AUTHOR,MODERATOR,READER,RECORDER,INSPECTOR FOR I = 1 TO 5: READ TITLE$(I): NEXT I RANDOMIZE TIMER INPUT "Enter author's name:"; TNAME$(1) ' Choose moderator IF TNAME$(1) = NAM$(1) THEN TNAME$(2) = NAM$(2) ELSE IF TNAME$(1) = NAM$(2) THEN TNAME$(2) = NAM$(1) ELSE TNAME$(2) = NAM$(INT(RND(3) * 2) + 1) END IF END IF ' Choose next 3 title names FOR I = 3 TO 5 VALID = 0 WHILE NOT VALID VALID = -1 X = INT(RND(3) * 7) + 1 FOR J = 1 TO I IF NAM$(X) = TNAME$(J) THEN VALID = 0 NEXT J WEND TNAME$(I) = NAM$(X) NEXT I ' Display all 5 titles and names. FOR I = 1 TO 5 PRINT TITLE$(I); " - "; TNAME$(I) NEXT I '2.9 ' This program will sort a list of names with area codes. ' DIM NAM$(15) INPUT "Enter two area codes:"; AREA1, AREA2 INPUT "Enter number of names:"; NUM FOR I = 1 TO NUM INPUT "Enter name:"; NAM$(I) NEXT I FOR I = 1 TO NUM - 1 FOR J = I + 1 TO NUM IF NAM$(I) > NAM$(J) THEN SWAP NAM$(I), NAM$(J) NEXT J NEXT I IF AREA1 > AREA2 THEN A = AREA1: AREA1 = AREA2: AREA2 = A MID = INT((NUM + 1) / 2) FOR I = 1 TO MID PRINT AREA1; "- "; NAM$(I) NEXT I FOR I = MID + 1 TO NUM PRINT AREA2; "- "; NAM$(I) NEXT I '2.10 ' This program will adjust a golf score by handicap. ' DATA 5,4,4,4,3,4,4,3,5 FOR I = 1 TO 9: READ PAR(I): NEXT I INPUT "Enter handicap:"; HAND PRINT "Enter gross scores:"; INPUT G(1), G(2), G(3), G(4), G(5), G(6), G(7), G(8), G(9) PRINT "HOLE #:"; FOR I = 1 TO 9: PRINT USING "####"; I; : NEXT I PRINT : PRINT "PAR: "; FOR I = 1 TO 9 PRINT USING "####"; PAR(I); PARTOT = PARTOT + PAR(I) NEXT I PRINT : PRINT "GROSS: "; FOR I = 1 TO 9 PRINT USING "####"; G(I); GTOT = GTOT + G(I) NEXT I PRINT : PRINT "ADJUST:"; ' Determine # of tripple and double bogeys allowed IF HAND > 9 THEN BOG(3) = HAND - 9: BOG(2) = 9 - BOG(3) IF HAND <= 9 THEN BOG(2) = HAND: BOG(1) = 9 - BOG(2) ' Adjust the gross scores by Handicap FOR I = 1 TO 9 DIFF = G(I) - PAR(I) ADJUSTED = 0 B = 3 WHILE NOT ADJUSTED AND (B > 0) IF (BOG(B) > 0) AND (DIFF >= B) THEN A(I) = PAR(I) + B BOG(B) = BOG(B) - 1 ADJUSTED = -1 END IF B = B - 1 WEND IF NOT ADJUSTED THEN A(I) = G(I) NEXT I ' Display the adjusted scores and totals FOR I = 1 TO 9 PRINT USING "####"; A(I); ATOT = ATOT + A(I) NEXT I PRINT : PRINT PRINT "PAR TOTAL:"; PARTOT PRINT "GROSS TOTAL:"; GTOT PRINT "ADJUST TOTAL:"; ATOT PRINT "ROUND HANDICAP:"; ATOT - PARTOT '3.1 ' This program will move a triangle of GTEDS around the screen. ' DATA " " DATA " G " DATA " T T " DATA " E E " DATA " D D " DATA " SDETGTEDS " DATA " " FOR I = 1 TO 7: READ A$(I): NEXT I CLS ROW = 9: COL = 34 WHILE CH$ <> CHR$(27) FOR I = 1 TO 7 LOCATE ROW + I, COL: PRINT A$(I); NEXT I C$ = INKEY$: IF C$ > "" THEN CH$ = C$ FOR I = 1 TO 100: NEXT I SELECT CASE UCASE$(CH$) CASE "I": ROW = ROW - 1 CASE "M": ROW = ROW + 1 CASE "J": COL = COL - 1 CASE "K": COL = COL + 1 END SELECT IF ROW = 0 THEN ROW = 1: CH$ = "" IF COL = 0 THEN COL = 1: CH$ = "" IF ROW = 18 THEN ROW = 17: CH$ = "" IF COL = 69 THEN COL = 68: CH$ = "" WEND '3.2 ' This program will display a date in 1992 after # of days. ' DIM MONTH(12), MNAME$(12) DATA TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,MONDAY FOR I = 1 TO 6: READ DAY$(I): NEXT I DATA 31,29,31,30,31,30,31,31,30,31,30,31 FOR I = 1 TO 12: READ MONTH(I): NEXT I DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER FOR I = 1 TO 12: READ MNAME$(I): NEXT I INPUT "Enter X:"; X X = X + 1 D = (X MOD 6) + 1 PRINT DAY$(D); " "; X = X + INT((X + 1) / 6) I = 1 WHILE SUM + MONTH(I) < X SUM = SUM + MONTH(I): I = I + 1 WEND PRINT MNAME$(I); X - SUM IF DAY$(D) <> "SATURDAY" THEN END X = X + 1 WHILE SUM + MONTH(I) < X SUM = SUM + MONTH(I): I = I + 1 WEND PRINT "SUNDAY "; MNAME$(I); X - SUM '3.3 ' This program will release program modules for PWS. ' WHILE NOT ALLDONE I = NUM + 1 INPUT "Enter name, program:"; NAME$(I), PROG$(I) ' Find previous Name/Prog or make addition J = 1 NOTFOUND = (NAME$(J) <> NAME$(I) OR PROG$(J) <> PROG$(I)) WHILE (J < I) AND NOTFOUND J = J + 1 NOTFOUND = (NAME$(J) <> NAME$(I) OR PROG$(J) <> PROG$(I)) WEND I = J IF I > NUM THEN NUM = I INPUT "Enter completed, release:"; COMP$(I), REL$(I) IF REL$(I) = "Y" THEN COMP$(I) = "Y" MODCOMP = (COMP$(I) = "Y") ' Check if Module completed by all, and at least 1 released IF MODCOMP THEN MODREL = 0 FOR J = 1 TO NUM IF PROG$(J) = PROG$(I) THEN IF COMP$(J) <> "Y" THEN MODCOMP = 0 IF REL$(J) = "Y" THEN MODREL = -1 END IF NEXT J ' If Module completed by all and 1 or more released IF (MODCOMP AND MODREL) THEN PRINT "MODULE "; PROG$(I); " HAS BEEN RELEASED" MODULE$ = PROG$(I) FOR J = 1 TO NUM IF PROG$(J) = MODULE$ THEN PROG$(J) = "" NEXT J ALLDONE = -1 FOR J = 1 TO NUM IF PROG$(J) <> "" THEN ALLDONE = 0 NEXT J END IF END IF WEND '3.4 ' This program will produce acronyms for phone numbers. ' DIM A$(18), B$(18) DATA AGENT,SOAP,MONEY,JEWEL,BALL,LOANS,CARE,SAVE,CALL,PAVE DATA KEEP,KINGS,KNIFE,KNOCK,JOINT,JUICE,LOBBY,RATE FOR I = 1 TO 18: READ B$(I): A$(I) = B$(I): NEXT I L1$ = " ADGJMPTW" L2$ = " BEHKNRUX" L3$ = " CFILOSVY" ' Sort the data alphabetically FOR I = 1 TO 17 FOR J = I + 1 TO 18 IF A$(I) > A$(J) THEN SWAP A$(I), A$(J) NEXT J NEXT I ' INPUT "Enter phone #:"; PH$ P4$ = MID$(PH$, 5, 4): P5$ = MID$(PH$, 3, 1) + P4$ ' Convert words to number strings FOR I = 1 TO 18 L = LEN(A$(I)): NUM$ = "" FOR J = 1 TO L K = 1: C$ = MID$(A$(I), J, 1): NOMATCH = -1 WHILE NOMATCH K = K + 1 IF MID$(L1$, K, 1) = C$ THEN NOMATCH = 0 IF MID$(L2$, K, 1) = C$ THEN NOMATCH = 0 IF MID$(L3$, K, 1) = C$ THEN NOMATCH = 0 WEND NUM$ = NUM$ + CHR$(48 + K) NEXT J IF L = 4 AND NUM$ = P4$ THEN PRINT MID$(PH$, 1, 4); A$(I) IF L = 5 AND NUM$ = P5$ THEN PRINT MID$(PH$, 1, 2); MID$(A$(I), 1, 1); "-"; PRINT MID$(A$(I), L - 3, 4) END IF NEXT I '3.5 ' This program will find seven 7-digit squares in base 8. ' NUM = 1242: SNUM = 0 WHILE SNUM < 7 NUM1$ = MID$(STR$(NUM), 2) ' Convert NUM1$ to base 10 number NUM1V NUM1V = 0 FOR I = 1 TO 4 DIGIT = ASC(MID$(NUM1$, I, 1)) - ASC("0") POWER = 1 FOR J = 1 TO LEN(NUM1$) - I POWER = POWER * 8 NEXT J NUM1V = NUM1V + DIGIT * POWER NEXT I NUM1V = NUM1V * NUM1V SQUARE$ = "": VALID = -1 FOR I = 0 TO 7: DUP(I) = 0: NEXT I ' Convert Num1V to Base8 number J = INT(LOG(NUM1V) / LOG(8)) WHILE (J >= 0) AND VALID POWER = 1 FOR K = 1 TO J: POWER = POWER * 8: NEXT K X = INT(NUM1V / POWER) ' Check for duplicate digits IF DUP(X) THEN VALID = 0 ELSE DUP(X) = -1 SQUARE$ = SQUARE$ + CHR$(48 + X) NUM1V = NUM1V - X * POWER END IF J = J - 1 WEND IF VALID THEN SNUM = SNUM + 1: PRINT SQUARE$; " "; NUM ' Increment to next base 8 number NUM = NUM + 1: NUMST$ = LTRIM$(STR$(NUM)) WHILE INSTR(1, NUMST$, "8") > 0 OR INSTR(1, NUMST$, "9") > 0 NUM = NUM + 1 NUMST$ = LTRIM$(STR$(NUM)) WEND WEND '3.6 ' This program will find 3 distinct integers that are pairwise ' relatively prime such that they sum to N. ' INPUT "Enter N:"; N X = 2 + (N MOD 2) WHILE (X < INT(N / 3)) AND NOT FOUND Y = X + 1 WHILE (Y < INT((N - X) / 2)) AND NOT FOUND Z = N - X - Y: FOUND = -1 FOR I = 2 TO Y IF (X MOD I = 0) AND (Y MOD I = 0) THEN FOUND = 0 IF (X MOD I = 0) AND (Z MOD I = 0) THEN FOUND = 0 IF (Y MOD I = 0) AND (Z MOD I = 0) THEN FOUND = 0 NEXT I IF FOUND THEN PRINT X; "+"; Y; "+"; Z; "="; N IF NOT FOUND THEN Y = Y + 1 WEND Z = Z + 1 WEND '3.7 ' This program will print combinations of 6 soccer players. ' DATA ANDY,DAN,DOUG,JACK,MIKE,YEHIA FOR I = 1 TO 6: READ NAME$(I): NEXT I INPUT "Enter number of substitutes:"; NUMOFSUB L = 6 + NUMOFSUB FOR I = 7 TO L INPUT "Enter name:"; NAME$(I) NEXT I ' Sort names with substitutes FOR I = 1 TO L - 1 FOR J = I + 1 TO L IF NAME$(I) >= NAME$(J) THEN SWAP NAME$(I), NAME$(J) NEXT J NEXT I ' M = 6 FOR I = 1 TO M: A(I) = M - I + 1: NEXT I N = 1: A(1) = A(1) - 1 WHILE N <= M A(N) = A(N) + 1 IF N > 1 THEN FOR I = N - 1 TO 1 STEP -1: A(I) = A(I + 1) + 1: NEXT I END IF IF A(N) <= L - N + 1 THEN S = S + 1 PRINT S; NAME$(A(M)); FOR I = M - 1 TO 1 STEP -1 PRINT ","; NAME$(A(I)); NEXT I PRINT N = 0 IF S MOD 24 = 0 THEN WHILE INKEY$ = "": WEND END IF N = N + 1 WEND '3.8 ' This program displays the Bill Date and the Due Date. ' January 1, 1992 was a Wednesday ' DIM MNAME$(12), MON(12), MHOL(12), DHOL(12) DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER FOR I = 1 TO 12: READ MNAME$(I): NEXT I DATA 31,29,31,30,31,30,31,31,30,31,30,31 FOR I = 1 TO 12: READ MON(I): NEXT I DATA TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY,MONDAY FOR I = 1 TO 7: READ DNAME$(I): NEXT I INPUT "Enter month of bill:"; MNUM INPUT "Enter cycle number:"; CYCLE INPUT "Enter number of days:"; NUMDAYS H = 1 INPUT "Enter holiday MM, DD:"; MHOL(H), DHOL(H) WHILE MHOL(H) > 0 H = H + 1 INPUT "Enter holiday MM, DD:"; MHOL(H), DHOL(H) WEND H = H - 1: PRINT DAYS(1) = 0 FOR I = 1 TO MNUM - 1 DAYS(1) = DAYS(1) + MON(I) NEXT I DAY(1) = 3 * CYCLE - 2: DAY(2) = DAY(1) + NUMDAYS DAYS(2) = DAYS(1) + DAY(2) DAYS(1) = DAYS(1) + DAY(1) FOR T = 1 TO 2 HOL = 1: WKEND = 1 ' Decrement days counter if holiday or weekend WHILE (HOL = 1) OR (WKEND = 1) HOL = 0: WKEND = 0 IF DAY(T) > MON(MNUM) THEN DAY(T) = DAY(T) - MON(MNUM) MNUM = MNUM + 1 END IF FOR I = 1 TO H IF MHOL(I) = MNUM AND DHOL(I) = DAY(T) THEN DAY(T) = DAY(T) + 1 DAYS(T) = DAYS(T) + 1: HOL = 1 END IF NEXT I X = DAYS(T) MOD 7 IF (X = 4) OR (X = 5) THEN ' Saturday or Sunday DAY(T) = DAY(T) + 1 DAYS(T) = DAYS(T) + 1: WKEND = 1 END IF WEND IF T = 1 THEN PRINT "BILL "; ELSE PRINT "DUE "; PRINT "DATE: "; DNAME$(X + 1); " "; MNAME$(MNUM); DAY(T) NEXT T '3.9 ' This program will calculate the area of a polygon room. ' INPUT "Enter number of sides:"; SIDES FOR I = 1 TO SIDES INPUT "Enter movement:"; MOV$ DIR$(I) = MID$(MOV$, 1, 1) L = LEN(MOV$) MOV$ = MID$(MOV$, 2, L - 1) DIST(I) = VAL(MOV$) ' Subtract Down and Left directions IF DIR$(I) = "D" OR DIR$(I) = "L" THEN DIST(I) = -DIST(I) NEXT I ' Multiply length by width to obtain rectangle area, ' then add or subtract area from overall area. I = 1: SUM = 0: AREA = 0 WHILE (I <= SIDES) SUM = SUM + DIST(I) AREA = AREA + (SUM * DIST(I + 1)) I = I + 2 WEND PRINT "AREA ="; ABS(AREA); "SQUARE FEET" '3.10 ' This program will display the reasons a Rubik's Cube is ' unsolvable. Input is to be separated by a space (not a ,) ' DATA "TOP: ","FRONT: ","RIGHT: ","BACK: ","LEFT: " DATA "BOTTOM:" FOR I = 1 TO 6: READ SIDE$(I): NEXT I EDGES$ = "T2P2 T6R2 T8F2 T4L2 F4L6 F6R4 " EDGES$ = EDGES$ + "R6P4 P6L4 F8B2 R8B6 P8B8 L8B4" FOR I = 1 TO 6 PRINT "Enter colors on "; SIDE$(I); INPUT COLORS$ FOR J = 1 TO 9 COL$(I, J) = MID$(COLORS$, J * 2 - 1, 1) NEXT J NEXT I ' MIDUNIQUE = -1 FOR I = 1 TO 5 FOR J = I + 1 TO 6 IF COL$(I, 5) = COL$(J, 5) THEN MIDUNIQUE = 0 NEXT J NEXT I ' IF NOT MIDUNIQUE THEN PRINT "COLORS ON MIDDLE SQUARES ARE NOT UNIQUE" END IF FOR K = 1 TO 12 S1 = INSTR(1, "TFRPLB", MID$(EDGES$, K * 5 - 4, 1)) N1 = ASC(MID$(EDGES$, K * 5 - 3, 1)) - ASC("0") S2 = INSTR(1, "TFRPLB", MID$(EDGES$, K * 5 - 2, 1)) N2 = ASC(MID$(EDGES$, K * 5 - 1, 1)) - ASC("0") IF COL$(S1, N1) = COL$(S2, N2) THEN ENUM = ENUM + 1 NEXT K PRINT "NUMBER OF EDGE PIECES HAVING SAME COLOR:"; ENUM