//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Brian Fallon
//
// Class: C Programming, Spring 2025
//
// Date: February 18, 2025
//
// 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 hoursTotal [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");

    // Process each employee one at a time
    for (i = 0; i < SIZE; i++)
    {
        // TODO - Prompt and Read in hours worked for employee
		printf("\nEnter number of hours worked: ");
        scanf("%f", &hoursTotal[i]);
	        
        // Calculate overtime and gross pay for employee
        if (hoursTotal[i] > STD_HOURS)
        {
            overtimeHrs[i] = hoursTotal[i] - STD_HOURS;
            // TODO: Calculate arrays normalPay and overtimePay with overtime
    		overtimePay[i] = overtimeHrs[i] * (OT_RATE*wageRate[i]);
    		normalPay[i]= STD_HOURS * wageRate[i];
        } // End if
        else // no OT
        {
            overtimeHrs[i] = 0;
            // TODO: Calculate arrays normalPay and overtimePay without overtime
			normalPay[i]=wageRate[i]*hoursTotal[i];
				
        } // End else

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

    // TODO: Print a nice table header
		printf ("\n\n*** Employee Pay Matrix ***\n");
		printf("------------------------------------------------");
		
    // 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("\nClock# Wage  Hours  OT      Gross\n");
        	printf("------------------------------------------------\n");
    	    printf("%06d %5.2f %5.1f %5.1f %8.2f\n", 
                clockNumber[i], wageRate[i], hoursTotal[i], overtimeHrs[i], grossPay[i]);
    } // End Second Loop

    return(0);
} // End Main