#//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Seth Hin
//
// Class: C Programming, Spring 2026
//
// Date: February 18, 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()
{
// 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};
// totals
float totalWage = 0, totalHours = 0, totalOT = 0, totalGross = 0;
printf ("\n*** Pay Calculator ***\n\n");
// process each employee one at a time
for (i = 0; i < SIZE; i++)
{
// hours worked for employee
printf("%ld: ", clockNumber
[i
]);
// calculate overtime and gross pay for employee
if (hours[i] >= STD_HOURS)
{
overtimeHrs[i] = hours[i] - STD_HOURS;
//calculate 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;
//calculate normalPay and overtimePay without overtime
normalPay[i] = hours[i] * wageRate[i];
overtimePay[i] = 0;
}
// calculate Gross Pay
grossPay[i] = normalPay[i] + overtimePay[i];
// accumlative totals
totalWage += wageRate[i];
totalHours += hours[i];
totalOT += overtimeHrs[i];
totalGross += grossPay[i];
}
// print table header
printf("\nClock#\tWage#\tHours\tOT\tGross\n"); printf("--------------\t---------\t--------\t-------\t-----------\n");
for (i = 0; i < SIZE; i++)
{
// print employee information from arrays
printf("%06ld\t%.2f\t%.1f\t%.1f\t%.2f\n", clockNumber[i],
wageRate[i],
hours[i],
overtimeHrs[i],
grossPay[i]);
}
printf("--------------\t---------\t--------\t-------\t-----------\n");
// totals row
printf("Total\t%.2f\t%.1f\t%.1f\t%.2f\n", totalWage, totalHours, totalOT, totalGross);
// averages row
printf("Average\t%.2f\t%.1f\t%.1f\t%.2f\n", totalWage/SIZE,
totalHours/SIZE,
totalOT/SIZE,
totalGross/SIZE);
return(0);
}
Iy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBBc3NpZ25tZW50IDQgLSBBcnJheXMKLy8KLy8gTmFtZTogU2V0aCBIaW4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIFNwcmluZyAyMDI2Ci8vCi8vIERhdGU6IEZlYnJ1YXJ5IDE4LCAyMDI2Ci8vCi8vIERlc2NyaXB0aW9uOiBQcm9ncmFtIHdoaWNoIGRldGVybWluZXMgb3ZlcnRpbWUgYW5kIAovLyBncm9zcyBwYXkgZm9yIGEgc2V0IG9mIGVtcGxveWVlcyB3aXRoIG91dHB1dHMgc2VudCAKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBjb25zdGFudHMgdG8gdXNlCiNkZWZpbmUgU0laRSA1ICAgICAgICAgICAvLyBudW1iZXIgb2YgZW1wbG95ZWVzIHRvIHByb2Nlc3MKI2RlZmluZSBTVERfSE9VUlMgNDAuMCAgIC8vIG5vcm1hbCB3b3JrIHdlZWsgaG91cnMgYmVmb3JlIG92ZXJ0aW1lCiNkZWZpbmUgT1RfUkFURSAxLjUgICAgICAvLyB0aW1lIGFuZCBoYWxmIG92ZXJ0aW1lIHNldHRpbmcKCmludCBtYWluKCkKewoKCiAgICAKCiAgICAvLyB1bmlxdWUgZW1wbG95ZWUgaWRlbnRpZmllcgogICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyIFtTSVpFXSA9IHs5ODQwMSwgNTI2NDg4LCA3NjUzNDksIDM0NjQ1LCAxMjc2MTV9OwogCiAgICBmbG9hdCBncm9zc1BheSBbU0laRV07ICAgICAvLyB3ZWVrbHkgZ3Jvc3MgcGF5IC0gbm9ybWFsIHBheSArIG92ZXJ0aW1lIHBheSAgICAgICAgIAogICAgZmxvYXQgaG91cnMgW1NJWkVdOyAgICAgICAgLy8gaG91cnMgd29ya2VkIGluIGEgZ2l2ZW4gd2VlawogICAgaW50IGk7ICAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCBhbmQgYXJyYXkgaW5kZXgKICAgIGZsb2F0IG5vcm1hbFBheSBbU0laRV07ICAgIC8vIG5vcm1hbCB3ZWVrbHkgcGF5IHdpdGhvdXQgYW55IG92ZXJ0aW1lCiAgICBmbG9hdCBvdmVydGltZUhyc1tTSVpFXTsgICAvLyBvdmVydGltZSBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrCiAgICBmbG9hdCBvdmVydGltZVBheSBbU0laRV07ICAvLyBvdmVydGltZSBwYXkgZm9yIGEgZ2l2ZW4gd2VlawoKICAgIC8vIGhvdXJseSBwYXkgZm9yIGVhY2ggZW1wbG95ZWUKICAgIGZsb2F0IHdhZ2VSYXRlIFtTSVpFXSA9IHsxMC42LCA5Ljc1LCAxMC41LCAxMi4yNSwgOC4zNX07IAogICAgCiAgICAvLyB0b3RhbHMgCiAgICBmbG9hdCB0b3RhbFdhZ2UgPSAwLCB0b3RhbEhvdXJzID0gMCwgdG90YWxPVCA9IDAsIHRvdGFsR3Jvc3MgPSAwOwoKICAgIHByaW50ZiAoIlxuKioqIFBheSBDYWxjdWxhdG9yICoqKlxuXG4iKTsKCiAgICAvLyBwcm9jZXNzIGVhY2ggZW1wbG95ZWUgb25lIGF0IGEgdGltZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKICAgIHsKCiAgICAgICAgLy8gaG91cnMgd29ya2VkIGZvciBlbXBsb3llZQogICAgICAgIHByaW50ZigiJWxkOiAiLCBjbG9ja051bWJlcltpXSk7CiAgICAgICAgc2NhbmYoIiVmIiwgJmhvdXJzW2ldKTsKCiAgICAgICAgLy8gY2FsY3VsYXRlIG92ZXJ0aW1lIGFuZCBncm9zcyBwYXkgZm9yIGVtcGxveWVlCiAgICAgICAgaWYgKGhvdXJzW2ldID49IFNURF9IT1VSUykKICAgICAgICB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gaG91cnNbaV0gLSBTVERfSE9VUlM7CiAgICAgICAgICAgIAogICAgICAgICAgICAvL2NhbGN1bGF0ZSBub3JtYWxQYXkgYW5kIG92ZXJ0aW1lUGF5IHdpdGggb3ZlcnRpbWUKICAgICAgICAgICAgIG5vcm1hbFBheVtpXSA9IFNURF9IT1VSUyAqIHdhZ2VSYXRlW2ldOwogICAgICAgICAgICAgb3ZlcnRpbWVQYXlbaV0gPSBvdmVydGltZUhyc1tpXSAqIHdhZ2VSYXRlW2ldICogT1RfUkFURTsKICAgICAgICB9CiAgICAgICAgZWxzZSAvLyBubyBPVAogICAgICAgIHsKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgLy9jYWxjdWxhdGUgbm9ybWFsUGF5IGFuZCBvdmVydGltZVBheSB3aXRob3V0IG92ZXJ0aW1lCgkJCSBub3JtYWxQYXlbaV0gPSBob3Vyc1tpXSAqIHdhZ2VSYXRlW2ldOwogICAgICAgICAgICAgb3ZlcnRpbWVQYXlbaV0gPSAwOwogICAgICAgIH0KCiAgICAgICAgCS8vIGNhbGN1bGF0ZSBHcm9zcyBQYXkKICAgICAgICAJZ3Jvc3NQYXlbaV0gPSBub3JtYWxQYXlbaV0gKyBvdmVydGltZVBheVtpXTsKICAgICAgICAJCiAgICAgICAgCS8vIGFjY3VtbGF0aXZlIHRvdGFscwogICAgICAgIAl0b3RhbFdhZ2UgKz0gd2FnZVJhdGVbaV07CiAgICAgICAgCXRvdGFsSG91cnMgKz0gaG91cnNbaV07CiAgICAgICAgCXRvdGFsT1QgKz0gb3ZlcnRpbWVIcnNbaV07CiAgICAgICAgCXRvdGFsR3Jvc3MgKz0gZ3Jvc3NQYXlbaV07CiAgICB9CgogICAgCS8vIHByaW50IHRhYmxlIGhlYWRlcgogICAgCXByaW50ZigiXG5DbG9jayNcdFdhZ2UjXHRIb3Vyc1x0T1RcdEdyb3NzXG4iKTsKICAgIAlwcmludGYoIi0tLS0tLS0tLS0tLS0tXHQtLS0tLS0tLS1cdC0tLS0tLS0tXHQtLS0tLS0tXHQtLS0tLS0tLS0tLVxuIik7CiAgICAgICAgICAgCiAgICAJCgogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQogICAgewogICAgICAgIC8vIHByaW50IGVtcGxveWVlIGluZm9ybWF0aW9uIGZyb20gYXJyYXlzCiAgICAgICAgIHByaW50ZigiJTA2bGRcdCUuMmZcdCUuMWZcdCUuMWZcdCUuMmZcbiIsCiAgICAgICAgICAgICAgIGNsb2NrTnVtYmVyW2ldLAogICAgICAgICAgICAgICB3YWdlUmF0ZVtpXSwKICAgICAgICAgICAgICAgaG91cnNbaV0sCiAgICAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldLAogICAgICAgICAgICAgICBncm9zc1BheVtpXSk7CiAgICB9CgkJcHJpbnRmKCItLS0tLS0tLS0tLS0tLVx0LS0tLS0tLS0tXHQtLS0tLS0tLVx0LS0tLS0tLVx0LS0tLS0tLS0tLS1cbiIpOwoJCQoJCS8vIHRvdGFscyByb3cKCQlwcmludGYoIlRvdGFsXHQlLjJmXHQlLjFmXHQlLjFmXHQlLjJmXG4iLAogICAgICAgIHRvdGFsV2FnZSwgdG90YWxIb3VycywgdG90YWxPVCwgdG90YWxHcm9zcyk7CiAgICAgICAgCiAgICAgICAgLy8gYXZlcmFnZXMgcm93CiAgICAgICAgcHJpbnRmKCJBdmVyYWdlXHQlLjJmXHQlLjFmXHQlLjFmXHQlLjJmXG4iLAogICAgICAgICAgIHRvdGFsV2FnZS9TSVpFLAogICAgICAgICAgIHRvdGFsSG91cnMvU0laRSwKICAgICAgICAgICB0b3RhbE9UL1NJWkUsCiAgICAgICAgICAgdG90YWxHcm9zcy9TSVpFKTsKICAgIHJldHVybigwKTsKfQ==