//********************************************************
//
// Assignment 6 - Structures
//
// Name: Jalen Tam
//
// Class: C Programming, Fall 2025
//
// Date: October 17, 2025
//
// Description: Program which determines overtime and
// gross pay for a set of employees with outputs sent
// to standard output (the screen).
//
// Call by Value design
//
//********************************************************
#include <stdio.h>
//constants
#define SIZE 5
#define OVT_RATE 1.5
#define STD_HOURS 40
//struct format
struct employee {
long int number;
float wage;
float totalHours;
float regHours;
float ovtHours;
float regPay;
float ovtPay;
float grossPay;
};
//function prototypes
float getHours (int clockNumber);
float getRegularHours (float totalHours);
float calculateOvtHours (float hours);
float calculateRegPay (float regHours, float wage);
float calculateOvtPay (float ovtHours, float wage);
float calculateGrossPay (float regPay, float overtimePay);
// FUNCTION getHours
// Prompt for hours worked
// Parameters: clockNumber - Employee clock number
// Returns: Hours worked
float getHours (int clockNumber){
// Initialize hours variable
float hours;
// Prompt for hours work to be input
//printf("Enter hours worked for %06i", clockNumber);
// Return hours
return hours;
}
// FUNCTION getRegularHours
// Calculate regular hours worked
// Parameters: totalHours - total hours worked
// Returns: Regular hours worked
float getRegularHours (float totalHours) {
float regHours;
if (totalHours > STD_HOURS) {
regHours = 40;
} else {
regHours = totalHours;
}
return regHours;
}
// FUNCTION calculateOvtHours
// Calculates overtime worked
// Parameters: hours - total hours employee worked
// Returns: Overtime horus worked
float calculateOvtHours (float hours){
float overtime;
//calculate overtime hours from total hours
if (hours > STD_HOURS) {
overtime = hours - STD_HOURS;
} else {
overtime = 0;
}
//return amount of overtime hours
return overtime;
}
// FUNCTION calculateRegPay
// Calculates the regular pay of employee
// Parameters: regHours - regular hours
// wage - rate of pay
// Returns: regular pay
float calculateRegPay (float regHours, float wage) {
float regPay;
regPay = regHours * wage;
return regPay;
}
// FUNCTION calculateOvtgPay
// Calculates the overtime pay of employee
// Parameters: ovtHours - overtime hours
// wage - rate of pay
// Returns: overtime pay
float calculateOvtPay (float ovtHours, float wage) {
float ovtPay;
ovtPay = ovtHours * wage * OVT_RATE;
return ovtPay;
}
// FUNCTION calculateGrossPay
// Calculates the gross pay of employee. Regular pay + overtime pay
// Parameters: regPay - regular pay
// overtimPay - overtime pay
// Returns: gross pay
float calculateGrossPay (float regPay, float overtimePay) {
float gross;
gross = regPay + overtimePay;
return gross;
}
int main(void) {
//scruct array initialization
struct employee emps[SIZE] = {
{98401, 10.60, 0, 0, 0, 0, 0, 0},
{526488, 9.75, 0, 0, 0, 0, 0, 0},
{765349, 10.50, 0, 0, 0, 0, 0, 0},
{34645, 12.25, 0, 0, 0, 0, 0, 0},
{127615, 8.35, 0, 0, 0, 0, 0, 0}
};
printf("Clock# Wage Hours OT GrossPay\n"); printf("---------------------------------------\n");
for (int i =0; i < SIZE; ++i) {
emps[i].totalHours = getHours(emps[i].number);
emps[i].regHours = getRegularHours(emps[i].totalHours);
emps[i].ovtHours = calculateOvtHours(emps[i].totalHours);
emps[i].regPay = calculateRegPay(emps[i].regHours, emps[i].wage);
emps[i].ovtPay = calculateOvtPay(emps[i].ovtHours, emps[i].wage);
emps[i].grossPay = calculateGrossPay(emps[i].regPay, emps[i].ovtPay);
printf("%06li\t %.2f\t %.2f\t %.2f\t %.2f\t\n", emps
[i
].
number, emps
[i
].
wage, emps
[i
].
totalHours, emps
[i
].
ovtHours, emps
[i
].
grossPay); }
return 0;
}
Ci8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gQXNzaWdubWVudCA2IC0gU3RydWN0dXJlcwovLwovLyBOYW1lOiBKYWxlbiBUYW0KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIEZhbGwgMjAyNQovLwovLyBEYXRlOiBPY3RvYmVyIDE3LCAyMDI1Ci8vCi8vIERlc2NyaXB0aW9uOiBQcm9ncmFtIHdoaWNoIGRldGVybWluZXMgb3ZlcnRpbWUgYW5kIAovLyBncm9zcyBwYXkgZm9yIGEgc2V0IG9mIGVtcGxveWVlcyB3aXRoIG91dHB1dHMgc2VudCAKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8gQ2FsbCBieSBWYWx1ZSBkZXNpZ24KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgovL2NvbnN0YW50cwojZGVmaW5lIFNJWkUgNQojZGVmaW5lIE9WVF9SQVRFIDEuNQojZGVmaW5lIFNURF9IT1VSUyA0MAoKLy9zdHJ1Y3QgZm9ybWF0CnN0cnVjdCBlbXBsb3llZSB7Cglsb25nIGludCBudW1iZXI7CglmbG9hdCB3YWdlOwoJZmxvYXQgdG90YWxIb3VyczsKCWZsb2F0IHJlZ0hvdXJzOwoJZmxvYXQgb3Z0SG91cnM7CglmbG9hdCByZWdQYXk7CglmbG9hdCBvdnRQYXk7CglmbG9hdCBncm9zc1BheTsKfTsKCi8vZnVuY3Rpb24gcHJvdG90eXBlcwpmbG9hdCBnZXRIb3VycyAoaW50IGNsb2NrTnVtYmVyKTsKZmxvYXQgZ2V0UmVndWxhckhvdXJzIChmbG9hdCB0b3RhbEhvdXJzKTsKZmxvYXQgY2FsY3VsYXRlT3Z0SG91cnMgKGZsb2F0IGhvdXJzKTsJCmZsb2F0IGNhbGN1bGF0ZVJlZ1BheSAoZmxvYXQgcmVnSG91cnMsIGZsb2F0IHdhZ2UpOwpmbG9hdCBjYWxjdWxhdGVPdnRQYXkgKGZsb2F0IG92dEhvdXJzLCBmbG9hdCB3YWdlKTsKZmxvYXQgY2FsY3VsYXRlR3Jvc3NQYXkgKGZsb2F0IHJlZ1BheSwgZmxvYXQgb3ZlcnRpbWVQYXkpOwkKCi8vIEZVTkNUSU9OIGdldEhvdXJzCi8vIFByb21wdCBmb3IgaG91cnMgd29ya2VkIAovLyBQYXJhbWV0ZXJzOiBjbG9ja051bWJlciAtIEVtcGxveWVlIGNsb2NrIG51bWJlcgovLyBSZXR1cm5zOiBIb3VycyB3b3JrZWQKZmxvYXQgZ2V0SG91cnMgKGludCBjbG9ja051bWJlcil7CgkKCS8vIEluaXRpYWxpemUgaG91cnMgdmFyaWFibGUKCWZsb2F0IGhvdXJzOwoJCgkvLyBQcm9tcHQgZm9yIGhvdXJzIHdvcmsgdG8gYmUgaW5wdXQKCS8vcHJpbnRmKCJFbnRlciBob3VycyB3b3JrZWQgZm9yICUwNmkiLCBjbG9ja051bWJlcik7CglzY2FuZigiJWYiLCAmaG91cnMpOwoJCgkvLyBSZXR1cm4gaG91cnMgCglyZXR1cm4gaG91cnM7CgkKfQoKLy8gRlVOQ1RJT04gZ2V0UmVndWxhckhvdXJzCi8vIENhbGN1bGF0ZSByZWd1bGFyIGhvdXJzIHdvcmtlZAovLyBQYXJhbWV0ZXJzOiB0b3RhbEhvdXJzIC0gdG90YWwgaG91cnMgd29ya2VkCi8vIFJldHVybnM6IFJlZ3VsYXIgaG91cnMgd29ya2VkCmZsb2F0IGdldFJlZ3VsYXJIb3VycyAoZmxvYXQgdG90YWxIb3VycykgewoJZmxvYXQgcmVnSG91cnM7CgkKCWlmICh0b3RhbEhvdXJzID4gU1REX0hPVVJTKSB7CgkJcmVnSG91cnMgPSA0MDsKCX0gZWxzZSB7CgkJcmVnSG91cnMgPSB0b3RhbEhvdXJzOwoJfQoJCglyZXR1cm4gcmVnSG91cnM7CgkKfQoKLy8gRlVOQ1RJT04gY2FsY3VsYXRlT3Z0SG91cnMKLy8gQ2FsY3VsYXRlcyBvdmVydGltZSB3b3JrZWQgCi8vIFBhcmFtZXRlcnM6IGhvdXJzIC0gdG90YWwgaG91cnMgZW1wbG95ZWUgd29ya2VkCi8vIFJldHVybnM6IE92ZXJ0aW1lIGhvcnVzIHdvcmtlZApmbG9hdCBjYWxjdWxhdGVPdnRIb3VycyAoZmxvYXQgaG91cnMpewoJZmxvYXQgb3ZlcnRpbWU7CgkKCS8vY2FsY3VsYXRlIG92ZXJ0aW1lIGhvdXJzIGZyb20gdG90YWwgaG91cnMKCWlmIChob3VycyA+IFNURF9IT1VSUykgewoJCW92ZXJ0aW1lID0gaG91cnMgLSBTVERfSE9VUlM7Cgl9IGVsc2UgewoJCW92ZXJ0aW1lID0gMDsKCX0KCQoJLy9yZXR1cm4gYW1vdW50IG9mIG92ZXJ0aW1lIGhvdXJzCglyZXR1cm4gb3ZlcnRpbWU7Cn0KCi8vIEZVTkNUSU9OIGNhbGN1bGF0ZVJlZ1BheQovLyBDYWxjdWxhdGVzIHRoZSByZWd1bGFyIHBheSBvZiBlbXBsb3llZQovLyBQYXJhbWV0ZXJzOiByZWdIb3VycyAtIHJlZ3VsYXIgaG91cnMKLy8JCQkgICB3YWdlIC0gcmF0ZSBvZiBwYXkKLy8gUmV0dXJuczogcmVndWxhciBwYXkKZmxvYXQgY2FsY3VsYXRlUmVnUGF5IChmbG9hdCByZWdIb3VycywgZmxvYXQgd2FnZSkgewoJCglmbG9hdCByZWdQYXk7CglyZWdQYXkgPSByZWdIb3VycyAqIHdhZ2U7CglyZXR1cm4gcmVnUGF5OwoJCn0KCi8vIEZVTkNUSU9OIGNhbGN1bGF0ZU92dGdQYXkKLy8gQ2FsY3VsYXRlcyB0aGUgb3ZlcnRpbWUgcGF5IG9mIGVtcGxveWVlCi8vIFBhcmFtZXRlcnM6IG92dEhvdXJzIC0gb3ZlcnRpbWUgaG91cnMKLy8JCQkgICB3YWdlIC0gcmF0ZSBvZiBwYXkKLy8gUmV0dXJuczogb3ZlcnRpbWUgcGF5CmZsb2F0IGNhbGN1bGF0ZU92dFBheSAoZmxvYXQgb3Z0SG91cnMsIGZsb2F0IHdhZ2UpIHsKCQoJZmxvYXQgb3Z0UGF5OwoJb3Z0UGF5ID0gb3Z0SG91cnMgKiB3YWdlICogT1ZUX1JBVEU7CglyZXR1cm4gb3Z0UGF5OwoJCn0KCi8vIEZVTkNUSU9OIGNhbGN1bGF0ZUdyb3NzUGF5Ci8vIENhbGN1bGF0ZXMgdGhlIGdyb3NzIHBheSBvZiBlbXBsb3llZS4gIFJlZ3VsYXIgcGF5ICsgb3ZlcnRpbWUgcGF5IAovLyBQYXJhbWV0ZXJzOiByZWdQYXkgLSByZWd1bGFyIHBheQovLwkJCSAgIG92ZXJ0aW1QYXkgLSBvdmVydGltZSBwYXkKLy8gUmV0dXJuczogZ3Jvc3MgcGF5CmZsb2F0IGNhbGN1bGF0ZUdyb3NzUGF5IChmbG9hdCByZWdQYXksIGZsb2F0IG92ZXJ0aW1lUGF5KSB7CgkKCWZsb2F0IGdyb3NzOwoJZ3Jvc3MgPSByZWdQYXkgKyBvdmVydGltZVBheTsKCXJldHVybiBncm9zczsKCn0KCmludCBtYWluKHZvaWQpIHsKCS8vc2NydWN0IGFycmF5IGluaXRpYWxpemF0aW9uCglzdHJ1Y3QgZW1wbG95ZWUgZW1wc1tTSVpFXSA9IHsKCQl7OTg0MDEsIDEwLjYwLCAwLCAwLCAwLCAwLCAwLCAwfSwKCQl7NTI2NDg4LCA5Ljc1LCAwLCAwLCAwLCAwLCAwLCAwfSwKCQl7NzY1MzQ5LCAxMC41MCwgMCwgMCwgMCwgMCwgMCwgMH0sCgkJezM0NjQ1LCAxMi4yNSwgMCwgMCwgMCwgMCwgMCwgMH0sCgkJezEyNzYxNSwgOC4zNSwgMCwgMCwgMCwgMCwgMCwgMH0KCX07CgkKCXByaW50ZigiQ2xvY2sjCVdhZ2UJSG91cnMJT1QJR3Jvc3NQYXlcbiIpOwoJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoJCglmb3IgKGludCBpID0wOyBpIDwgU0laRTsgKytpKSB7CgkJZW1wc1tpXS50b3RhbEhvdXJzID0gZ2V0SG91cnMoZW1wc1tpXS5udW1iZXIpOwoJCWVtcHNbaV0ucmVnSG91cnMgPSBnZXRSZWd1bGFySG91cnMoZW1wc1tpXS50b3RhbEhvdXJzKTsKCQllbXBzW2ldLm92dEhvdXJzID0gY2FsY3VsYXRlT3Z0SG91cnMoZW1wc1tpXS50b3RhbEhvdXJzKTsKCQllbXBzW2ldLnJlZ1BheSA9IGNhbGN1bGF0ZVJlZ1BheShlbXBzW2ldLnJlZ0hvdXJzLCBlbXBzW2ldLndhZ2UpOwoJCWVtcHNbaV0ub3Z0UGF5ID0gY2FsY3VsYXRlT3Z0UGF5KGVtcHNbaV0ub3Z0SG91cnMsIGVtcHNbaV0ud2FnZSk7CgkJZW1wc1tpXS5ncm9zc1BheSA9IGNhbGN1bGF0ZUdyb3NzUGF5KGVtcHNbaV0ucmVnUGF5LCBlbXBzW2ldLm92dFBheSk7CgkJCgkJcHJpbnRmKCIlMDZsaVx0ICUuMmZcdCAlLjJmXHQgJS4yZlx0ICUuMmZcdFxuIiwgZW1wc1tpXS5udW1iZXIsIGVtcHNbaV0ud2FnZSwgZW1wc1tpXS50b3RhbEhvdXJzLCBlbXBzW2ldLm92dEhvdXJzLCBlbXBzW2ldLmdyb3NzUGF5KTsKCX0KCXJldHVybiAwOwp9Cg==