//********************************************************
//
// Assignment 5 - Functions
//
// Name: Seth Hin
//
// Class: C Programming, Spring 2026
//
// Date: February 28, 2026
//
// Description: Program which determines overtime and
// gross pay for a set of employees with outputs sent
// to standard output (the screen).
//
// All functions are called by value
//
//********************************************************
#include <stdio.h>
// constants
#define SIZE 5
#define OVERTIME_RATE 1.5f
#define STD_WORK_WEEK 40.0f
// function prototypes
float getHours (long int clockNumber);
float calcOvertime (float hours);
float calcGross (float hours, float wageRate, float overtimeHrs);
void printHeader (void);
void printEmp (long int clockNumber, float wageRate, float hours,
float overtimeHrs, float grossPay);
void printTotals(float totalWage, float totalHours,
float totalOT, float totalGross);
int main()
{
long int clockNumber[SIZE] = {98401,526488,765349,34645,127615};
float grossPay[SIZE];
float hours[SIZE];
float overtimeHrs[SIZE];
float wageRate[SIZE] = {10.60,9.75,10.50,12.25,8.35};
float totalWage = 0.0f;
float totalHours = 0.0f;
float totalOT = 0.0f;
float totalGross = 0.0f;
int i;
for (i = 0; i < SIZE; ++i)
{
hours[i] = getHours(clockNumber[i]);
overtimeHrs[i] = calcOvertime(hours[i]);
grossPay[i] = calcGross(hours[i], wageRate[i], overtimeHrs[i]);
totalWage += wageRate[i];
totalHours += hours[i];
totalOT += overtimeHrs[i];
totalGross += grossPay[i];
}
printHeader();
for (i = 0; i < SIZE; ++i)
{
printEmp(clockNumber[i], wageRate[i], hours[i],
overtimeHrs[i], grossPay[i]);
}
printTotals(totalWage, totalHours, totalOT, totalGross);
return 0;
}
// Function: getHours
float getHours (long int clockNumber)
{
float hoursWorked;
printf("\n Hours worked by emp # %06li: ", clockNumber
); scanf ("%f", &hoursWorked
);
return hoursWorked;
}
// Function: calcOvertime
float calcOvertime (float hours)
{
float overtime;
if (hours > STD_WORK_WEEK)
overtime = hours - STD_WORK_WEEK;
else
overtime = 0.0f;
return overtime;
}
// Function: calcGross
float calcGross (float hours, float wageRate, float overtimeHrs)
{
float regularPay;
float overtimePay;
float gross;
regularPay = (hours - overtimeHrs) * wageRate;
overtimePay = overtimeHrs * wageRate * OVERTIME_RATE;
gross = regularPay + overtimePay;
return gross;
}
// Function: printHeader
void printHeader (void)
{
printf("\n\n*** Pay Calculator ***\n"); printf("\n----------------------------------------------------------\n"); printf("Clock# Wage Hours OT Gross\n"); printf("----------------------------------------------------------\n"); }
// Function: printEmp
void printEmp (long int clockNumber, float wageRate, float hours,
float overtimeHrs, float grossPay)
{
printf("%06li %5.2f %5.1f %5.1f %8.2f\n", clockNumber, wageRate, hours, overtimeHrs, grossPay);
}
// Function: printTotals
void printTotals(float totalWage, float totalHours,
float totalOT, float totalGross)
{
printf("----------------------------------------------------------\n");
printf("Total %5.2f %5.1f %5.1f %8.2f\n", totalWage, totalHours, totalOT, totalGross);
printf("Average %5.2f %5.1f %5.1f %8.2f\n", totalWage / SIZE,
totalHours / SIZE,
totalOT / SIZE,
totalGross / SIZE);
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBBc3NpZ25tZW50IDUgLSBGdW5jdGlvbnMKLy8KLy8gTmFtZTogU2V0aCBIaW4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIFNwcmluZyAyMDI2Ci8vCi8vIERhdGU6IEZlYnJ1YXJ5IDI4LCAyMDI2Ci8vCi8vIERlc2NyaXB0aW9uOiBQcm9ncmFtIHdoaWNoIGRldGVybWluZXMgb3ZlcnRpbWUgYW5kIAovLyBncm9zcyBwYXkgZm9yIGEgc2V0IG9mIGVtcGxveWVlcyB3aXRoIG91dHB1dHMgc2VudCAKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8gQWxsIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IHZhbHVlCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiNpbmNsdWRlIDxzdGRpby5oPgoKLy8gY29uc3RhbnRzCiNkZWZpbmUgU0laRSA1CiNkZWZpbmUgT1ZFUlRJTUVfUkFURSAxLjVmCiNkZWZpbmUgU1REX1dPUktfV0VFSyA0MC4wZgoKLy8gZnVuY3Rpb24gcHJvdG90eXBlcwpmbG9hdCBnZXRIb3VycyAobG9uZyBpbnQgY2xvY2tOdW1iZXIpOwpmbG9hdCBjYWxjT3ZlcnRpbWUgKGZsb2F0IGhvdXJzKTsKZmxvYXQgY2FsY0dyb3NzIChmbG9hdCBob3VycywgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IG92ZXJ0aW1lSHJzKTsKdm9pZCBwcmludEhlYWRlciAodm9pZCk7CnZvaWQgcHJpbnRFbXAgIChsb25nIGludCBjbG9ja051bWJlciwgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLAogICAgICAgICAgICAgICAgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KTsKdm9pZCBwcmludFRvdGFscyhmbG9hdCB0b3RhbFdhZ2UsIGZsb2F0IHRvdGFsSG91cnMsCiAgICAgICAgICAgICAgICAgZmxvYXQgdG90YWxPVCwgZmxvYXQgdG90YWxHcm9zcyk7CgppbnQgbWFpbigpCnsKICAgIGxvbmcgIGludCBjbG9ja051bWJlcltTSVpFXSA9IHs5ODQwMSw1MjY0ODgsNzY1MzQ5LDM0NjQ1LDEyNzYxNX07CiAgICBmbG9hdCBncm9zc1BheVtTSVpFXTsKICAgIGZsb2F0IGhvdXJzW1NJWkVdOwogICAgZmxvYXQgb3ZlcnRpbWVIcnNbU0laRV07CiAgICBmbG9hdCB3YWdlUmF0ZVtTSVpFXSA9IHsxMC42MCw5Ljc1LDEwLjUwLDEyLjI1LDguMzV9OwoKICAgIGZsb2F0IHRvdGFsV2FnZSA9IDAuMGY7CiAgICBmbG9hdCB0b3RhbEhvdXJzID0gMC4wZjsKICAgIGZsb2F0IHRvdGFsT1QgPSAwLjBmOwogICAgZmxvYXQgdG90YWxHcm9zcyA9IDAuMGY7CgogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKICAgIHsKICAgICAgICBob3Vyc1tpXSA9IGdldEhvdXJzKGNsb2NrTnVtYmVyW2ldKTsKICAgICAgICBvdmVydGltZUhyc1tpXSA9IGNhbGNPdmVydGltZShob3Vyc1tpXSk7CiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBjYWxjR3Jvc3MoaG91cnNbaV0sIHdhZ2VSYXRlW2ldLCBvdmVydGltZUhyc1tpXSk7CgogICAgICAgIHRvdGFsV2FnZSArPSB3YWdlUmF0ZVtpXTsKICAgICAgICB0b3RhbEhvdXJzICs9IGhvdXJzW2ldOwogICAgICAgIHRvdGFsT1QgKz0gb3ZlcnRpbWVIcnNbaV07CiAgICAgICAgdG90YWxHcm9zcyArPSBncm9zc1BheVtpXTsKICAgIH0KCiAgICBwcmludEhlYWRlcigpOwoKICAgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCiAgICB7CiAgICAgICAgcHJpbnRFbXAoY2xvY2tOdW1iZXJbaV0sIHdhZ2VSYXRlW2ldLCBob3Vyc1tpXSwKICAgICAgICAgICAgICAgICBvdmVydGltZUhyc1tpXSwgZ3Jvc3NQYXlbaV0pOwogICAgfQoKICAgIHByaW50VG90YWxzKHRvdGFsV2FnZSwgdG90YWxIb3VycywgdG90YWxPVCwgdG90YWxHcm9zcyk7CgogICAgcmV0dXJuIDA7Cn0KCgovLyBGdW5jdGlvbjogZ2V0SG91cnMgCmZsb2F0IGdldEhvdXJzIChsb25nIGludCBjbG9ja051bWJlcikKewogICAgZmxvYXQgaG91cnNXb3JrZWQ7CgogICAgcHJpbnRmKCJcbiBIb3VycyB3b3JrZWQgYnkgZW1wICMgJTA2bGk6ICIsIGNsb2NrTnVtYmVyKTsKICAgIHNjYW5mICgiJWYiLCAmaG91cnNXb3JrZWQpOwoKICAgIHJldHVybiBob3Vyc1dvcmtlZDsKfQoKCi8vIEZ1bmN0aW9uOiBjYWxjT3ZlcnRpbWUKZmxvYXQgY2FsY092ZXJ0aW1lIChmbG9hdCBob3VycykKewogICAgZmxvYXQgb3ZlcnRpbWU7CgogICAgaWYgKGhvdXJzID4gU1REX1dPUktfV0VFSykKICAgICAgICBvdmVydGltZSA9IGhvdXJzIC0gU1REX1dPUktfV0VFSzsKICAgIGVsc2UKICAgICAgICBvdmVydGltZSA9IDAuMGY7CgogICAgcmV0dXJuIG92ZXJ0aW1lOwp9CgoKLy8gRnVuY3Rpb246IGNhbGNHcm9zcwpmbG9hdCBjYWxjR3Jvc3MgKGZsb2F0IGhvdXJzLCBmbG9hdCB3YWdlUmF0ZSwgZmxvYXQgb3ZlcnRpbWVIcnMpCnsKICAgIGZsb2F0IHJlZ3VsYXJQYXk7CiAgICBmbG9hdCBvdmVydGltZVBheTsKICAgIGZsb2F0IGdyb3NzOwoKICAgIHJlZ3VsYXJQYXkgPSAoaG91cnMgLSBvdmVydGltZUhycykgKiB3YWdlUmF0ZTsKICAgIG92ZXJ0aW1lUGF5ID0gb3ZlcnRpbWVIcnMgKiB3YWdlUmF0ZSAqIE9WRVJUSU1FX1JBVEU7CiAgICBncm9zcyA9IHJlZ3VsYXJQYXkgKyBvdmVydGltZVBheTsKCiAgICByZXR1cm4gZ3Jvc3M7Cn0KCi8vIEZ1bmN0aW9uOiBwcmludEhlYWRlcgp2b2lkIHByaW50SGVhZGVyICh2b2lkKQp7CiAgICBwcmludGYoIlxuXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG4iKTsKICAgIHByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgIHByaW50ZigiQ2xvY2sjICAgV2FnZSAgIEhvdXJzICAgIE9UICAgICBHcm9zc1xuIik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwp9CgovLyBGdW5jdGlvbjogcHJpbnRFbXAKdm9pZCBwcmludEVtcCAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywKICAgICAgICAgICAgICAgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KQp7CiAgICBwcmludGYoIiUwNmxpICAgJTUuMmYgICAlNS4xZiAgICU1LjFmICAgJTguMmZcbiIsCiAgICAgICAgICAgY2xvY2tOdW1iZXIsIHdhZ2VSYXRlLCBob3Vycywgb3ZlcnRpbWVIcnMsIGdyb3NzUGF5KTsKfQoKLy8gRnVuY3Rpb246IHByaW50VG90YWxzCnZvaWQgcHJpbnRUb3RhbHMoZmxvYXQgdG90YWxXYWdlLCBmbG9hdCB0b3RhbEhvdXJzLAogICAgICAgICAgICAgICAgIGZsb2F0IHRvdGFsT1QsIGZsb2F0IHRvdGFsR3Jvc3MpCnsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CgogICAgcHJpbnRmKCJUb3RhbCAgICAlNS4yZiAgICU1LjFmICAgJTUuMWYgICAlOC4yZlxuIiwKICAgICAgICAgICB0b3RhbFdhZ2UsIHRvdGFsSG91cnMsIHRvdGFsT1QsIHRvdGFsR3Jvc3MpOwoKICAgIHByaW50ZigiQXZlcmFnZSAgJTUuMmYgICAlNS4xZiAgICU1LjFmICAgJTguMmZcbiIsCiAgICAgICAgICAgdG90YWxXYWdlIC8gU0laRSwKICAgICAgICAgICB0b3RhbEhvdXJzIC8gU0laRSwKICAgICAgICAgICB0b3RhbE9UIC8gU0laRSwKICAgICAgICAgICB0b3RhbEdyb3NzIC8gU0laRSk7Cn0=