! ***** ACSL Problem #1 Senior Division *****

! *****          Mason Albright         *****

 

DIM start_time_input$(7), end_time_input$(7), start_time(7), end_time(7)

 

DO

 

   ! *** Gathering Input ***

 

   PRINT

   INPUT prompt "Input: ":location, start_time_input$(1), end_time_input$(1), start_time_input$(2), end_time_input$(2), start_time_input$(3), end_time_input$(3), start_time_input$(4), end_time_input$(4), start_time_input$(5), end_time_input$(5), start_time_input$(6), end_time_input$(6), start_time_input$(7), end_time_input$(7)

 

   ! *** Converting Time Inputs to Usable Data ***

 

   FOR i = 1 to 7

 

       IF ord(trim$(start_time_input$(i))) >= 48 and ord(trim$(start_time_input$(i))) <= 57 then

          LET start_time(i) = (val(trim$(start_time_input$(i))))/2+8.5

       ELSE

          LET start_time(i) = (ord(trim$(start_time_input$(i)))-55)/2+8.5

       END IF

 

       IF ord(trim$(end_time_input$(i))) >= 48 and ord(trim$(end_time_input$(i))) <= 57 then

          LET end_time(i) = (val(trim$(end_time_input$(i))))/2+8.5

       ELSE

          LET end_time(i) = (ord(trim$(end_time_input$(i)))-55)/2+8.5

       END IF

 

   NEXT i

 

   ! ***

 

   LET pay = 0

   LET hours = 0

 

   FOR i = 1 to 7

       LET hours = hours+end_time(i)-start_time(i)

   NEXT i

 

 

 

   IF location < 200 then

 

      ! *** Calculating Pay for Locations 100-199 ***

 

      IF hours <= 30 then

         LET pay = pay+10*hours

      ELSE

         LET pay = pay+300+15*(hours-30)

      END IF

 

      ! ***

 

   ELSE IF location < 300 then

 

      ! *** Calculating Pay for Locations 200-299 ***

 

      IF hours <= 40 then

         LET pay = pay+7.5*hours

      ELSE

         LET pay = pay+300+15*(hours-40)

      END IF

 

      ! ***

 

   ELSE IF location < 400 then

 

      ! *** Calculating Pay for Locations 300-399 ***

 

      IF hours <= 20 then

         LET pay = pay+9.25*hours

      ELSE

         LET pay = pay+185+10.5*(hours-20)

      END IF

 

      ! ***

 

   ELSE IF location < 500 then

 

      ! *** Calculating Pay for Locations 400-499 ***

 

      FOR i = 1 to 7

 

          IF mod(7,i) = 0 then

             LET pay = pay+13.5*(end_time(i)-start_time(i))

          ELSE

             LET pay = pay+6.75*(end_time(i)-start_time(i))

          END IF

 

      NEXT i

 

      ! ***

 

   ELSE

 

      ! *** Calculating Pay for Locations 500-599 ***

 

      FOR i = 1 to 7

 

          IF end_time(i)-start_time(i) <= 6 then

             LET pay = pay+8*(end_time(i)-start_time(i))

          ELSE

             LET pay = pay+48+12*(end_time(i)-start_time(i)-6)

          END IF

 

      NEXT i

 

      ! ***

 

   END IF

 

 

 

   ! *** Printing the Output ***

 

   PRINT

   PRINT "Output: ";

   PRINT "$";trim$(using$("#####.##",round(pay,2)))

   PRINT

 

   ! ***

 

LOOP

 

END