//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Rose Samedi
//
// Class: C Programming, Fall 2025
//
// Date: 10/19/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
 
// Function prototype for printing employee details
void printEmp(long int clockNumber, float wageRate, float hours, float overtimeHrs, float grossPay);
 
int main() {
    // Declare variables needed for the program
    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 wageRate[SIZE] = {10.60, 9.75, 10.50, 12.25, 8.35};
 
    printf("\n*** Pay Calculator ***\n\n");  
    // Loop to get hours worked and calculate pay for each employee
    for (i = 0; i < SIZE; i++) {
        printf("Enter the hours worked for employee %ld: ", clockNumber
[i
]);  
        // Calculate overtime and gross pay for the employee
        if (hours[i] > STD_HOURS) {
            overtimeHrs[i] = hours[i] - STD_HOURS;
            normalPay[i] = STD_HOURS * wageRate[i];
            overtimePay[i] = overtimeHrs[i] * wageRate[i] * OT_RATE;
            grossPay[i] = normalPay[i] + overtimePay[i];
        } else { // No overtime
            overtimeHrs[i] = 0.0;
            overtimePay[i] = 0.0;
            normalPay[i] = hours[i] * wageRate[i];
            grossPay[i] = normalPay[i];
        }
    }
 
    // Print a nice table header
    printf("\n\n---------------------------------------------------------------\n");     printf("Clock #   | Wage  | Hours | OT Hrs | OT Pay | Gross Pay\n");     printf("---------------------------------------------------------------\n");  
    // Loop to print employee data
    for (i = 0; i < SIZE; i++) {
        // Print all the employees using a dedicated function
        printEmp(clockNumber[i], wageRate[i], hours[i], overtimeHrs[i], grossPay[i]);
    }
 
    return 0;
}
 
// Function definition for printEmp
void printEmp(long int clockNumber, float wageRate, float hours, float overtimeHrs, float grossPay) {
    printf("%07ld | $%5.2f | %5.1f | %6.1f | $%6.2f | $%8.2f\n",            clockNumber, wageRate, hours, overtimeHrs, overtimeHrs * wageRate * OT_RATE, grossPay);
}
				Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIEFzc2lnbm1lbnQgNCAtIEFycmF5cwovLwovLyBOYW1lOiBSb3NlIFNhbWVkaQovLwovLyBDbGFzczogQyBQcm9ncmFtbWluZywgRmFsbCAyMDI1Ci8vCi8vIERhdGU6IDEwLzE5LzIwMjUKLy8KLy8gRGVzY3JpcHRpb246IFByb2dyYW0gd2hpY2ggZGV0ZXJtaW5lcyBvdmVydGltZSBhbmQKLy8gZ3Jvc3MgcGF5IGZvciBhIHNldCBvZiBlbXBsb3llZXMgd2l0aCBvdXRwdXRzIHNlbnQKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIGNvbnN0YW50cyB0byB1c2UKI2RlZmluZSBTSVpFIDUgICAgICAgICAgLy8gbnVtYmVyIG9mIGVtcGxveWVlcyB0byBwcm9jZXNzCiNkZWZpbmUgU1REX0hPVVJTIDQwLjAgLy8gbm9ybWFsIHdvcmsgd2VlayBob3VycyBiZWZvcmUgb3ZlcnRpbWUKI2RlZmluZSBPVF9SQVRFIDEuNSAgICAvLyB0aW1lIGFuZCBoYWxmIG92ZXJ0aW1lIHNldHRpbmcKCi8vIEZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgcHJpbnRpbmcgZW1wbG95ZWUgZGV0YWlscwp2b2lkIHByaW50RW1wKGxvbmcgaW50IGNsb2NrTnVtYmVyLCBmbG9hdCB3YWdlUmF0ZSwgZmxvYXQgaG91cnMsIGZsb2F0IG92ZXJ0aW1lSHJzLCBmbG9hdCBncm9zc1BheSk7CgppbnQgbWFpbigpIHsKICAgIC8vIERlY2xhcmUgdmFyaWFibGVzIG5lZWRlZCBmb3IgdGhlIHByb2dyYW0KICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyW1NJWkVdID0gezk4NDAxLCA1MjY0ODgsIDc2NTM0OSwgMzQ2NDUsIDEyNzYxNX07CiAgICBmbG9hdCBncm9zc1BheVtTSVpFXTsgICAgICAvLyB3ZWVrbHkgZ3Jvc3MgcGF5IC0gbm9ybWFsIHBheSArIG92ZXJ0aW1lIHBheQogICAgZmxvYXQgaG91cnNbU0laRV07ICAgICAgICAgLy8gaG91cnMgd29ya2VkIGluIGEgZ2l2ZW4gd2VlawogICAgaW50IGk7ICAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCBhbmQgYXJyYXkgaW5kZXgKICAgIGZsb2F0IG5vcm1hbFBheVtTSVpFXTsgICAgIC8vIG5vcm1hbCB3ZWVrbHkgcGF5IHdpdGhvdXQgYW55IG92ZXJ0aW1lCiAgICBmbG9hdCBvdmVydGltZUhyc1tTSVpFXTsgICAvLyBvdmVydGltZSBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrCiAgICBmbG9hdCBvdmVydGltZVBheVtTSVpFXTsgICAvLyBvdmVydGltZSBwYXkgZm9yIGEgZ2l2ZW4gd2VlawogICAgZmxvYXQgd2FnZVJhdGVbU0laRV0gPSB7MTAuNjAsIDkuNzUsIDEwLjUwLCAxMi4yNSwgOC4zNX07CgogICAgcHJpbnRmKCJcbioqKiBQYXkgQ2FsY3VsYXRvciAqKipcblxuIik7CgogICAgLy8gTG9vcCB0byBnZXQgaG91cnMgd29ya2VkIGFuZCBjYWxjdWxhdGUgcGF5IGZvciBlYWNoIGVtcGxveWVlCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJFbnRlciB0aGUgaG91cnMgd29ya2VkIGZvciBlbXBsb3llZSAlbGQ6ICIsIGNsb2NrTnVtYmVyW2ldKTsKICAgICAgICBzY2FuZigiJWYiLCAmaG91cnNbaV0pOwoKICAgICAgICAvLyBDYWxjdWxhdGUgb3ZlcnRpbWUgYW5kIGdyb3NzIHBheSBmb3IgdGhlIGVtcGxveWVlCiAgICAgICAgaWYgKGhvdXJzW2ldID4gU1REX0hPVVJTKSB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gaG91cnNbaV0gLSBTVERfSE9VUlM7CiAgICAgICAgICAgIG5vcm1hbFBheVtpXSA9IFNURF9IT1VSUyAqIHdhZ2VSYXRlW2ldOwogICAgICAgICAgICBvdmVydGltZVBheVtpXSA9IG92ZXJ0aW1lSHJzW2ldICogd2FnZVJhdGVbaV0gKiBPVF9SQVRFOwogICAgICAgICAgICBncm9zc1BheVtpXSA9IG5vcm1hbFBheVtpXSArIG92ZXJ0aW1lUGF5W2ldOwogICAgICAgIH0gZWxzZSB7IC8vIE5vIG92ZXJ0aW1lCiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gMC4wOwogICAgICAgICAgICBvdmVydGltZVBheVtpXSA9IDAuMDsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gaG91cnNbaV0gKiB3YWdlUmF0ZVtpXTsKICAgICAgICAgICAgZ3Jvc3NQYXlbaV0gPSBub3JtYWxQYXlbaV07CiAgICAgICAgfQogICAgfQoKICAgIC8vIFByaW50IGEgbmljZSB0YWJsZSBoZWFkZXIKICAgIHByaW50ZigiXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICBwcmludGYoIkNsb2NrICMgICB8IFdhZ2UgIHwgSG91cnMgfCBPVCBIcnMgfCBPVCBQYXkgfCBHcm9zcyBQYXlcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIC8vIExvb3AgdG8gcHJpbnQgZW1wbG95ZWUgZGF0YQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykgewogICAgICAgIC8vIFByaW50IGFsbCB0aGUgZW1wbG95ZWVzIHVzaW5nIGEgZGVkaWNhdGVkIGZ1bmN0aW9uCiAgICAgICAgcHJpbnRFbXAoY2xvY2tOdW1iZXJbaV0sIHdhZ2VSYXRlW2ldLCBob3Vyc1tpXSwgb3ZlcnRpbWVIcnNbaV0sIGdyb3NzUGF5W2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8gRnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgcHJpbnRFbXAKdm9pZCBwcmludEVtcChsb25nIGludCBjbG9ja051bWJlciwgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycywgZmxvYXQgZ3Jvc3NQYXkpIHsKICAgIHByaW50ZigiJTA3bGQgfCAkJTUuMmYgfCAlNS4xZiB8ICU2LjFmIHwgJCU2LjJmIHwgJCU4LjJmXG4iLAogICAgICAgICAgIGNsb2NrTnVtYmVyLCB3YWdlUmF0ZSwgaG91cnMsIG92ZXJ0aW1lSHJzLCBvdmVydGltZUhycyAqIHdhZ2VSYXRlICogT1RfUkFURSwgZ3Jvc3NQYXkpOwp9