```FLORIDA HIGH SCHOOLS COMPUTING COMPETITION '81
BASIC PROGRAM SOLUTIONS

'1.1
' This program will compute precent of heads and tails.
'
INPUT "Enter number of heads: "; H
INPUT "Enter number of tails: "; T
S = H + T
PRINT "PERCENT HEADS:"; H / S * 100
PRINT "PERCENT TAILS:"; T / S * 100

'1.2
' This program will display the angle of a polygon.
'
INPUT "Enter number of sides: "; N
PRINT "ANGLE="; 180 * (N - 2) / N

'1.3
' This program will compute the value of a function.
'
INPUT "A, B, C, X: "; A, B, C, X
PRINT "AX^2 + BX + C ="; A * X * X + B * X + C

'1.4
' This program will compute the net price after discounts.
'
INPUT "Enter original price: "; P
FOR I = 1 TO 2
PRINT "Enter discount"; I; " percent:"; : INPUT D
P = P - P * D / 100
NEXT I
PRINT "FINAL NET PRICE: \$"; INT(P * 100 + .5) / 100

'1.5
' This program will determine the quadrant of a point.
'
INPUT "Enter X, Y: "; X, Y
IF X > 0 AND Y > 0 THEN PRINT "QUADRANT: I"
IF X < 0 AND Y > 0 THEN PRINT "QUADRANT: II"
IF X < 0 AND Y < 0 THEN PRINT "QUADRANT: III"
IF X > 0 AND Y < 0 THEN PRINT "QUADRANT: IV"
IF X = 0 THEN PRINT "LIES ON THE Y-AXIS"
IF Y = 0 THEN PRINT "LIES ON THE X-AXIS"

'2.1
' This program will sum two fractions.
'
INPUT "Enter a, b, c, d: "; A, B, C, D
NUM = A * D + B * C: DEN = B * D
FOR I = NUM TO 1 STEP -1
IF NUM MOD I = 0 AND DEN MOD I = 0 THEN
PRINT NUM / I; "/"; DEN / I: END
END IF
NEXT I

'2.2
' This program will determine if quad is equilateral.
'
FOR I = 1 TO 4
PRINT "Enter point"; I; ":"; : INPUT A(I), B(I)
NEXT I
A(5) = A(1): B(5) = B(1)
FOR I = 1 TO 4
C(I) = SQR((A(I) - A(I + 1)) ^ 2 + (B(I) - B(I + 1)) ^ 2)
NEXT I
FOR I = 1 TO 3
IF ABS(C(I) - C(I + 1)) > .1 THEN PRINT "NOT EQUILATERAL": END
NEXT I
PRINT "EQUILATERAL"

'2.3
' This program will print discount rate for phone call.
'
INPUT "Enter day, time: "; D, T
IF T >= 1700 AND T < 2300 THEN PRINT "20%": END
IF T >= 2300 OR T < 700 THEN PRINT "40%": END
IF D = 7 THEN PRINT "20%": END
IF D = 1 THEN PRINT "40%": END
PRINT "NO DISCOUNT"

'2.4
' This program will determine if graph is parallel.
'
INPUT "Enter A, B, C: "; A, B, C
INPUT "Enter D, E, F: "; D, E, F
PRINT "LINES ARE ";
IF A * E <> D * B THEN PRINT "NOT ";
PRINT "PARALLEL"

'2.5
' This program will find the LCM of 3 integers.
'
INPUT "Enter three integers: "; A, B, C
FOR I = 1 TO B * C
S = S + A
IF S MOD B = 0 AND S MOD C = 0 THEN PRINT S: END
NEXT I

'3.1
' This program will convert a number from base 10 to 8.
'
INPUT "Enter numeral, base: "; N, B
J = INT(LOG(N) / LOG(B))
FOR I = J TO 0 STEP -1
X = INT(N / B ^ I): PRINT USING "#"; X;
N = N - X * B ^ I
NEXT I
PRINT

'3.2
' This program will print the mode in a list.
'
INPUT "Enter how many numbers: "; N
DIM A(N + 1), B(N + 1): A(N + 1) = -999
FOR I = 1 TO N: INPUT "Enter #: "; A(I): NEXT I
FOR I = 1 TO N
FOR J = I + 1 TO N
IF A(I) = A(J) THEN B(I) = B(I) + 1
NEXT J
IF B(I) > X THEN X = B(I)
NEXT I
PRINT "MODE(S):";
FOR I = 1 TO N
IF B(I) = X THEN PRINT A(I);
NEXT I
PRINT : PRINT "NUMBER OF OCCURRENCES:"; X + 1

'3.3
' This program will compute gross weekly pay.
'
INPUT "Employee Number: "; E\$
INPUT "Regular rate of pay/hour \$"; R
INPUT "Enter hours for M,T,W,R,F:"; H(1), H(2), H(3), H(4), H(5)
FOR I = 1 TO 5
IF H(I) <= 8 THEN
PAY = PAY + H(I) * R
ELSE
PAY = PAY + 8 * R + (H(I) - 8) * R * 2
END IF
NEXT I
PRINT "EMPLOYEE NUMBER: "; E\$
PRINT USING "GROSS WEEKLY PAY: \$###.##"; PAY

'3.4
' This program will play tic-tac-toe with a user.
'
'Board numbering system
DATA 1,2,3, 8,9,4, 7,6,5
'Sets of 3 winning squares (in addition to above list)
DATA 1,8,7, 2,9,6, 3,4,5, 1,9,5, 3,9,7
'Vertical and horizontal coordinates for squares
R(1) = 1: C(1) = 1: R(2) = 1: C(2) = 5: R(3) = 1: C(3) = 9
R(4) = 3: C(4) = 9: R(5) = 5: C(5) = 9: R(6) = 5: C(6) = 5
R(7) = 5: C(7) = 1: R(8) = 3: C(8) = 1: R(9) = 3: C(9) = 5
'
RANDOMIZE TIMER
PL\$(0) = "YOU": PL\$(1) = "COMPUTER"
CLS : A\$ = "  |   |": B\$ = "---------":
PRINT A\$: PRINT B\$: PRINT A\$: PRINT B\$: PRINT A\$
FOR I = 1 TO 9
A(I) = 9: LOCATE R(I), C(I): PRINT MID\$(STR\$(I), 2, 1)
NEXT I
A(9) = 1: LOCATE R(9), C(9): PRINT "X"
'
FOR MOV = 2 TO 9
IF MOV = 2 OR MOV = 4 OR MOV = 6 OR MOV = 8 THEN
P = 0
ELSE
P = 1
END IF
IF P = 0 THEN
DO
LOCATE 8, 3: INPUT "Enter #"; N
LOCATE 8, 11: PRINT "  "
LOOP UNTIL A(N) > 1
A(N) = 0: LOCATE R(N), C(N): PRINT "O"
GOSUB CheckWinner
ELSE
'       Computers move
DO
X = INT(RND(8) * 8 + 1)
LOOP UNTIL A(X) > 1
A(X) = 1: LOCATE R(X), C(X): PRINT "X"
GOSUB CheckWinner
END IF
NEXT MOV
LOCATE 10, 3: PRINT "TIE GAME": END
'          Determine if someone wins
CheckWinner:
FOR I = 1 TO 8
IF A(B) = P AND A(C) = P AND A(D) = P THEN
LOCATE 10, 3: PRINT PL\$(P); " WON!": END
END IF
NEXT I: RESTORE: RETURN

'3.5
' This program will print a list of people who will retire.
'
TM = 4: TY = 1981    'Today's month and year
INPUT "Enter number of employees:"; N
FOR I = 1 TO N
PRINT
INPUT "Social Security No.:"; S\$(I)
INPUT "Name:"; N\$(I)
INPUT "Birthdate (Month and day:"; BM\$(I)
INPUT "Birthdate (Year):"; BY(I)
NEXT I
'          Determine who retires when
FOR Y = TY - 69 TO TY - 65
YR = Y - (TY - 70)
FOR I = 1 TO N
IF BY(I) <= Y THEN
A(YR) = A(YR) + 1
A\$(YR, A(YR)) = "  #" + S\$(I) + " " + N\$(I)
B(YR, A(YR)) = BY(I)
END IF
NEXT I
NEXT Y
'          Display retirers
FOR Y = 1 TO 5
IF A(Y) > 0 THEN
GOSUB SortDates
PRINT : PRINT "RETIRE WITHIN"; Y; "YEARS"
FOR I = 1 TO A(Y): PRINT A\$(Y, I): NEXT I
END IF
NEXT Y: END
'          Sort people by birthdates
SortDates:
FOR I = 1 TO A(Y) - 1
FOR J = I + 1 TO A(Y)
IF B(Y, I) > B(Y, J) THEN
X = B(Y, I): B(Y, I) = B(Y, J): B(Y, J) = X
X\$ = A\$(Y, I): A\$(Y, I) = A\$(Y, J): A\$(Y, J) = X\$
END IF
NEXT J
NEXT I: RETURN

```