//*******************************************************
//
// 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.0f // normal work week hours before overtime
#define OT_RATE 1.5f    // 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.60f, 9.75f, 10.50f, 12.25f, 8.35f};
 
    printf("\n*** Pay Calculator ***\n\n");  
    // Loop to get hours worked and calculate pay for each employee
    for (i = 0; i < SIZE; i++) {
        // C-style input using scanf, replacing C++'s cin
        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.0f;
            overtimePay[i] = 0.0f;
            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);
}
				Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIEFzc2lnbm1lbnQgNCAtIEFycmF5cwovLwovLyBOYW1lOiBSb3NlIFNhbWVkaQovLwovLyBDbGFzczogQyBQcm9ncmFtbWluZywgRmFsbCAyMDI1Ci8vCi8vIERhdGU6IDEwLzE5LzIwMjUKLy8KLy8gRGVzY3JpcHRpb246IFByb2dyYW0gd2hpY2ggZGV0ZXJtaW5lcyBvdmVydGltZSBhbmQKLy8gZ3Jvc3MgcGF5IGZvciBhIHNldCBvZiBlbXBsb3llZXMgd2l0aCBvdXRwdXRzIHNlbnQKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIGNvbnN0YW50cyB0byB1c2UKI2RlZmluZSBTSVpFIDUgICAgICAgICAgLy8gbnVtYmVyIG9mIGVtcGxveWVlcyB0byBwcm9jZXNzCiNkZWZpbmUgU1REX0hPVVJTIDQwLjBmIC8vIG5vcm1hbCB3b3JrIHdlZWsgaG91cnMgYmVmb3JlIG92ZXJ0aW1lCiNkZWZpbmUgT1RfUkFURSAxLjVmICAgIC8vIHRpbWUgYW5kIGhhbGYgb3ZlcnRpbWUgc2V0dGluZwoKLy8gRnVuY3Rpb24gcHJvdG90eXBlIGZvciBwcmludGluZyBlbXBsb3llZSBkZXRhaWxzCnZvaWQgcHJpbnRFbXAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KTsKCmludCBtYWluKCkgewogICAgLy8gRGVjbGFyZSB2YXJpYWJsZXMgbmVlZGVkIGZvciB0aGUgcHJvZ3JhbQogICAgbG9uZyBpbnQgY2xvY2tOdW1iZXJbU0laRV0gPSB7OTg0MDEsIDUyNjQ4OCwgNzY1MzQ5LCAzNDY0NSwgMTI3NjE1fTsKICAgIGZsb2F0IGdyb3NzUGF5W1NJWkVdOyAgICAgIC8vIHdlZWtseSBncm9zcyBwYXkgLSBub3JtYWwgcGF5ICsgb3ZlcnRpbWUgcGF5CiAgICBmbG9hdCBob3Vyc1tTSVpFXTsgICAgICAgICAvLyBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrCiAgICBpbnQgaTsgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIGFuZCBhcnJheSBpbmRleAogICAgZmxvYXQgbm9ybWFsUGF5W1NJWkVdOyAgICAgLy8gbm9ybWFsIHdlZWtseSBwYXkgd2l0aG91dCBhbnkgb3ZlcnRpbWUKICAgIGZsb2F0IG92ZXJ0aW1lSHJzW1NJWkVdOyAgIC8vIG92ZXJ0aW1lIGhvdXJzIHdvcmtlZCBpbiBhIGdpdmVuIHdlZWsKICAgIGZsb2F0IG92ZXJ0aW1lUGF5W1NJWkVdOyAgIC8vIG92ZXJ0aW1lIHBheSBmb3IgYSBnaXZlbiB3ZWVrCiAgICBmbG9hdCB3YWdlUmF0ZVtTSVpFXSA9IHsxMC42MGYsIDkuNzVmLCAxMC41MGYsIDEyLjI1ZiwgOC4zNWZ9OwoKICAgIHByaW50ZigiXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG5cbiIpOwoKICAgIC8vIExvb3AgdG8gZ2V0IGhvdXJzIHdvcmtlZCBhbmQgY2FsY3VsYXRlIHBheSBmb3IgZWFjaCBlbXBsb3llZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykgewogICAgICAgIC8vIEMtc3R5bGUgaW5wdXQgdXNpbmcgc2NhbmYsIHJlcGxhY2luZyBDKysncyBjaW4KICAgICAgICBwcmludGYoIkVudGVyIHRoZSBob3VycyB3b3JrZWQgZm9yIGVtcGxveWVlICVsZDogIiwgY2xvY2tOdW1iZXJbaV0pOwogICAgICAgIHNjYW5mKCIlZiIsICZob3Vyc1tpXSk7CgogICAgICAgIC8vIENhbGN1bGF0ZSBvdmVydGltZSBhbmQgZ3Jvc3MgcGF5IGZvciB0aGUgZW1wbG95ZWUKICAgICAgICBpZiAoaG91cnNbaV0gPiBTVERfSE9VUlMpIHsKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSBob3Vyc1tpXSAtIFNURF9IT1VSUzsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gU1REX0hPVVJTICogd2FnZVJhdGVbaV07CiAgICAgICAgICAgIG92ZXJ0aW1lUGF5W2ldID0gb3ZlcnRpbWVIcnNbaV0gKiB3YWdlUmF0ZVtpXSAqIE9UX1JBVEU7CiAgICAgICAgICAgIGdyb3NzUGF5W2ldID0gbm9ybWFsUGF5W2ldICsgb3ZlcnRpbWVQYXlbaV07CiAgICAgICAgfSBlbHNlIHsgLy8gTm8gb3ZlcnRpbWUKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSAwLjBmOwogICAgICAgICAgICBvdmVydGltZVBheVtpXSA9IDAuMGY7CiAgICAgICAgICAgIG5vcm1hbFBheVtpXSA9IGhvdXJzW2ldICogd2FnZVJhdGVbaV07CiAgICAgICAgICAgIGdyb3NzUGF5W2ldID0gbm9ybWFsUGF5W2ldOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBQcmludCBhIG5pY2UgdGFibGUgaGVhZGVyCiAgICBwcmludGYoIlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgcHJpbnRmKCJDbG9jayAjICAgfCBXYWdlICB8IEhvdXJzIHwgT1QgSHJzIHwgT1QgUGF5IHwgR3Jvc3MgUGF5XG4iKTsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCiAgICAvLyBMb29wIHRvIHByaW50IGVtcGxveWVlIGRhdGEKICAgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspIHsKICAgICAgICAvLyBQcmludCBhbGwgdGhlIGVtcGxveWVlcyB1c2luZyBhIGRlZGljYXRlZCBmdW5jdGlvbgogICAgICAgIHByaW50RW1wKGNsb2NrTnVtYmVyW2ldLCB3YWdlUmF0ZVtpXSwgaG91cnNbaV0sIG92ZXJ0aW1lSHJzW2ldLCBncm9zc1BheVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCi8vIEZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIHByaW50RW1wCnZvaWQgcHJpbnRFbXAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KSB7CiAgICBwcmludGYoIiUwN2xkIHwgJCU1LjJmIHwgJTUuMWYgfCAlNi4xZiB8ICQlNi4yZiB8ICQlOC4yZlxuIiwKICAgICAgICAgICBjbG9ja051bWJlciwgd2FnZVJhdGUsIGhvdXJzLCBvdmVydGltZUhycywgb3ZlcnRpbWVIcnMgKiB3YWdlUmF0ZSAqIE9UX1JBVEUsIGdyb3NzUGF5KTsKfQ==