#include <stdio.h>

// constants to use
#define SIZE 5           // number of employees to process
#define STD_HOURS 40.0   // normal work week hours before overtime
#define OT_RATE 1.5      // time and half overtime setting

int main()
{
    // Declare variables needed for the program
    // unique employee identifier
    long int clockNumber [SIZE] = {98401, 526488, 765349, 34645, 127615};
 
    float grossPay [SIZE];     // weekly gross pay - normal pay + overtime pay         
    float hours [SIZE];        // hours worked in a given week
    int i;                     // loop and array index
    float normalPay [SIZE];    // normal weekly pay without any overtime
    float overtimeHrs[SIZE];   // overtime hours worked in a given week
    float overtimePay [SIZE];  // overtime pay for a given week

    // hourly pay for each employee
    float wageRate [SIZE] = {10.6, 9.75, 10.5, 12.25, 8.35}; 

    printf ("\n*** Pay Calculator ***\n\n");

    // Process each employee one at a time
    for (i = 0; i < SIZE; i++)
    {
        // Prompt and Read in hours worked for employee
        printf("Enter hours worked for employee %06ld: ", clockNumber[i]);
        scanf("%f", &hours[i]);

        // Calculate overtime and gross pay for employee
        if (hours[i] > STD_HOURS)
        {
            overtimeHrs[i] = hours[i] - STD_HOURS;
            
            // Calculate arrays normalPay and overtimePay with overtime
            normalPay[i] = STD_HOURS * wageRate[i];
            overtimePay[i] = overtimeHrs[i] * (wageRate[i] * OT_RATE);
        }
        else // no OT
        {
            overtimeHrs[i] = 0.0;
            
            // Calculate arrays normalPay and overtimePay without overtime
            normalPay[i] = hours[i] * wageRate[i];
            overtimePay[i] = 0.0;
        }

        // Calculate Gross Pay
        grossPay[i] = normalPay[i] + overtimePay[i];
    }

    // Print a nice table header
    printf("\n----------------------------------------------------------------------------------------\n");
    printf("%-10s %-10s %-10s %-12s %-12s %-12s %-10s\n", 
           "Clock #", "Wage Rate", "Hours", "Normal Pay", "OT Hours", "OT Pay", "Gross Pay");
    printf("----------------------------------------------------------------------------------------\n");

    // Access each employee and print to screen
    for (i = 0; i < SIZE; i++)
    {
        printf("%-10ld $%-9.2f %-10.1f $%-11.2f %-12.1f $%-11.2f $%-9.2f\n",
               clockNumber[i], wageRate[i], hours[i], normalPay[i], 
               overtimeHrs[i], overtimePay[i], grossPay[i]);
    }
    printf("----------------------------------------------------------------------------------------\n");

    return 0;
}