//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Amanda Connors
//
// Class: C Programming, Fall 2026
//
// Date: October 4, 2026
//
// Description: Program which determines overtime and 
// gross pay for a set of employees with outputs sent 
// to standard output (the screen).
//
//********************************************************

#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
    // Recommend an array for clock, wage, hours,
    // ... and overtime hours and gross.
    // Recommend arrays also for normal pay and overtime pay                
    // It is OK to pre-fill clock and wage values ... or you can prompt for them

    // 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

    float totalWage = 0; // sum of wageRate array calculated later
    float totalHrs = 0; // sum of hours array calculated later
    float totalOtHrs = 0; // sum of overtimeHrs array calculated later
    float totalOtPay = 0; // sum of overtimePay array calculated later
    float totalNormPay = 0; // sum of normalPay array calculated later
    float totalGross = 0; // sum of grossPay array calculated later
        
    // 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++)
    {
        // TODO - Prompt and Read in hours worked for employee

        printf("\n Please enter the number of hours for employee %06li : ", clockNumber[i]);
        scanf("%f", &hours[i]);


        // Calculate overtime and gross pay for employee
        if (hours[i] >= STD_HOURS)
        {
            overtimeHrs[i] = hours[i] - STD_HOURS;
            // TODO: Calculate arrays normalPay and overtimePay with overtime

            overtimePay[i] = overtimeHrs[i] * (wageRate[i] * OT_RATE);
            normalPay[i] = STD_HOURS * wageRate[i];

        } //end if
        else // no OT
        {
            overtimeHrs[i] = 0;
            // TODO: Calculate arrays normalPay and overtimePay without overtime
            overtimePay[i] = 0;
            normalPay[i] = hours[i] * wageRate[i];

        } // end else

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

    // TODO: Print a nice table header
    printf("\n\n------------------------------------------------------------------\n");
    printf(" Clock#\t Wage\t Hours\t  OT \tStandard Pay\tOT Pay\t   Gross");
    printf("\n------------------------------------------------------------------\n");
    // Now that we have all the information in our arrays, we can
    // Access each employee and print to screen or file
    for (i = 0; i < SIZE; i++)
    {
        // TODO: Print employee information from your arrays
        printf(" %06li\t %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n",
            clockNumber[i], wageRate[i], hours[i], overtimeHrs[i], normalPay[i], overtimePay[i], grossPay[i]);
    } //end for
    
    // calculate the sum total of arrays
    for (i = 0; i < SIZE; i++)
    {
       totalWage += wageRate[i];
       totalHrs += hours[i];
       totalOtHrs += overtimeHrs[i];
       totalOtPay += overtimePay[i];
       totalNormPay += normalPay[i];
       totalGross += grossPay[i];

    } //end for

    // calculate averages
    float payAvg = totalWage / SIZE;
    float hoursAvg = totalHrs / SIZE;
    float otHrsAvg = totalOtHrs / SIZE;
    float normPayAvg = totalNormPay / SIZE;
    float otPayAvg = totalOtPay / SIZE;
    float grossAvg = totalGross / SIZE;

    // print the totals and averages
    printf(" ------\t -----\t ----- \t-------\t --------\t   -------\t --------\n");

    printf(" Total\t %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n",
        totalWage, totalHrs, totalOtHrs, totalNormPay, totalOtPay, totalGross);

    printf(" Average %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n",
        payAvg, hoursAvg, otHrsAvg, normPayAvg, otPayAvg, grossAvg);


    
    return(0);
}