PROGRAM 21
' FILENAME: PROG21.BAS
' THIS PROGRAM INPUTS EMPLOYEE'S NAMES, PAYRATES, AND HOURS WORKED
' AND CALCULATES THE TOTAL PAY OF EACH EMPLOYEE AND THE TOTALS FOR
' THE ENTIRE GROUP. AFTER EACH EMPLOYEE'S DATA HAS BEEN INPUT, IT
' DISPLAYS THE LIST OF EMPLOYEE'S AS THEY WERE ORIGINALLY INPUT,
' BACKWARDS, AND IN ALPHABETICAL ORDER. TOTALS ARE SHOWN FOR
' EACH LIST.
CLS
DIM NAME$(1 TO 100), HOURS(1 TO 100), RATE(1 TO 100), PAY(1 TO 100)
GOSUB INPUT.DATA
GOSUB PRINT.DATA
GOSUB SORTANDPRINT.THEM
GOSUB SORT.THEM
GOSUB PRINT.SORT
END
INPUT.DATA:
COUNT = 1
COUNT2 = 1
INPUT "ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ", NAME$(COUNT)
IF NAME$(COUNT) = "END" THEN
GOSUB SORT.THEM
GOSUB PRINT.SORT
END
END IF
DO
INPUT "ENTER THE NUMBER OF HOURS WORKED. ", HOURS(COUNT)
INPUT "ENTER THE RATE OF PAY. ", RATE(COUNT)
LET PAY(COUNT) = RATE(COUNT) * HOURS(COUNT)
LET PAY(COUNT) = INT(PAY(COUNT) * 100 + .5) / 100
LET TOTAL1 = TOTAL1 + HOURS(COUNT)
LET TOTAL2 = TOTAL2 + PAY(COUNT)
COUNT = COUNT + 1
COUNT2 = COUNT2 + 1
CLS
INPUT "ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ", NAME$(COUNT)
LOOP UNTIL UCASE$(NAME$(COUNT)) = "END"
RETURN
PRINT.DATA:
CLS
PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY"
COUNT2 = COUNT2 - 1
FOR COUNT = 1 TO COUNT2
PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT)
NEXT COUNT
LET TOTAL3$ = "TOTALS"
PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2
RETURN
SORTANDPRINT.THEM:
INPUT "PRESS 'ENTER' TO CONTINUE. (ARRAY BACKWARDS.) ", ENTER$
CLS
PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY"
FOR COUNT = COUNT2 TO 1 STEP -1
PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT)
NEXT COUNT
PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2
RETURN
SORT.THEM:
INPUT "PRESS 'ENTER' KEY TO CONTINUE. (ARRAY IN ALPHABETICAL ORDER.) ", ENTER$
CLS
DO
SORTED$ = "Y"
FOR COUNT = 1 TO COUNT2 - 1
IF NAME$(COUNT + 1) < NAME$(COUNT) THEN
SWAP NAME$(COUNT + 1), NAME$(COUNT)
SWAP HOURS(COUNT + 1), HOURS(COUNT)
SWAP RATE(COUNT + 1), RATE(COUNT)
SWAP PAY(COUNT + 1), PAY(COUNT)
SORTED$ = "N"
END IF
NEXT
LOOP WHILE SORTED$ = "N"
RETURN
PRINT.SORT:
PRINT "NAME "; "HOURS "; "PAYRATE "; "PAY"
FOR COUNT = 1 TO COUNT2
PRINT USING "\ \ ## ###.## ####.##"; NAME$(COUNT); HOURS(COUNT); RATE(COUNT); PAY(COUNT)
NEXT COUNT
PRINT USING "\ \ #### #####.##"; TOTAL3$; TOTAL1; TOTAL2
RETURN
' OUTFILE: PROG21.OUT
ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. anthony f. ortiz
ENTER THE NUMBER OF HOURS WORKED. 40
ENTER THE RATE OF PAY. 50
ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. david white
ENTER THE NUMBER OF HOURS WORKED. 10
ENTER THE RATE OF PAY. 5
ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. adam storm
ENTER THE NUMBER OF HOURS WORKED. 20
ENTER THE RATE OF PAY. 15
ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. ed cornejo
ENTER THE NUMBER OF HOURS WORKED. 20
ENTER THE RATE OF PAY. 15
ENTER EMPLOYEE'S NAME. TYPE 'END' TO QUIT. end
NAME HOURS PAYRATE PAY
anthony f. ortiz 40 50.00 2000.00
david white 10 5.00 50.00
adam storm 20 15.00 300.00
ed cornejo 20 15.00 300.00
TOTALS 90 2650.00
PRESS 'ENTER' TO CONTINUE. (ARRAY BACKWARDS.)
NAME HOURS PAYRATE PAY
ed cornejo 20 15.00 300.00
adam storm 20 15.00 300.00
david white 10 5.00 50.00
anthony f. ortiz 40 50.00 2000.00
TOTALS 90 2650.00
PRESS 'ENTER' KEY TO CONTINUE. (ARRAY IN ALPHABETICAL ORDER.)
NAME HOURS PAYRATE PAY
adam storm 20 15.00 300.00
anthony f. ortiz 40 50.00 2000.00
david white 10 5.00 50.00
ed cornejo 20 15.00 300.00
TOTALS 90 2650.00
BACK TO CIS133 PAGE.