//********************************************************
//
// Assignment 6 - Structures
//
// Name: Jacquelin Saint Lucien
//
// Class: C Programming, Fall 2025
//
// Date: 10/14/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
//
//********************************************************
// Define and Includes
#include <stdio.h>
// let's calculate the gross salary of a set of employees.
// in relation to their hours worked, their normal salary and their overtime.
// Determine the structure used as requested in the problem description.
struct employee {
int clockNumber;
float wage;
float hours;
float overtimeHours;
float grossPay;
};
// calculate overtime hours.
// It takes a pointer to an employee structure and updates the overtimeHours field.
void calculateOvertime(struct employee *emp) {
if (emp->hours > 40.0) {
emp->overtimeHours = emp->hours - 40.0;
} else {
emp->overtimeHours = 0.0;
}
}
// calculate gross pay.
// It takes a pointer to an employee structure and updates the grossPay field.
void calculateGrossPay(struct employee *emp) {
float normalHours = emp->hours > 40.0 ? 40.0 : emp->hours;
float overtimeHours = emp->overtimeHours;
float normalPay = normalHours * emp->wage;
float overtimePay = overtimeHours * emp->wage * 1.5;
emp->grossPay = normalPay + overtimePay;
}
int main() {
//Used a local variable to store the employee information.
struct employee employees[5] = {
{98401, 10.00, 0.0, 0.0, 0.0},
{526488, 9.75, 0.0, 0.0, 0.0},
{763349, 10.50, 0.0, 0.0, 0.0},
{34045, 12.25, 0.0, 0.0, 0.0},
{127615, 8.35, 0.0, 0.0, 0.0}
};
// The problem specifies to use these hours as input.
float hoursInput[] = {31.0, 42.5, 37.0, 0.0, 0.0};
// Call functions as needed to read and calculate information.
for (int i = 0; i < 5; i++) {
// Assign the given hours to the current employee.
employees[i].hours = hoursInput[i];
// Call the functions to calculate the overtime hours and gross pay.
calculateOvertime(&employees[i]);
calculateGrossPay(&employees[i]);
}
// Print the table header with the specified column titles.
printf("Clock Wage Hours OT Gross\n"); printf("------- ------ ------ ------ ------\n");
// Loop through the array again to print the results in a formatted table.
for (int i = 0; i < 5; i++) {
printf("%06d %5.2f %5.1f %5.1f %7.2f\n", employees[i].clockNumber,
employees[i].wage,
employees[i].hours,
employees[i].overtimeHours,
employees[i].grossPay);
}
return 0;
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBBc3NpZ25tZW50IDYgLSBTdHJ1Y3R1cmVzCi8vCi8vIE5hbWU6IEphY3F1ZWxpbiBTYWludCBMdWNpZW4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIEZhbGwgMjAyNQovLwovLyBEYXRlOiAxMC8xNC8yMDI1Ci8vCi8vIERlc2NyaXB0aW9uOiBQcm9ncmFtIHdoaWNoIGRldGVybWluZXMgb3ZlcnRpbWUgYW5kIAovLyBncm9zcyBwYXkgZm9yIGEgc2V0IG9mIGVtcGxveWVlcyB3aXRoIG91dHB1dHMgc2VudCAKLy8gdG8gc3RhbmRhcmQgb3V0cHV0ICh0aGUgc2NyZWVuKS4KLy8KLy8gQ2FsbCBieSBWYWx1ZSBkZXNpZ24KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLy8gRGVmaW5lIGFuZCBJbmNsdWRlcwoKCiNpbmNsdWRlIDxzdGRpby5oPgoKLy8gbGV0J3MgY2FsY3VsYXRlIHRoZSBncm9zcyBzYWxhcnkgb2YgYSBzZXQgb2YgZW1wbG95ZWVzLgovLyBpbiByZWxhdGlvbiB0byB0aGVpciBob3VycyB3b3JrZWQsIHRoZWlyIG5vcm1hbCBzYWxhcnkgYW5kIHRoZWlyIG92ZXJ0aW1lLgoKLy8gRGV0ZXJtaW5lIHRoZSBzdHJ1Y3R1cmUgdXNlZCBhcyByZXF1ZXN0ZWQgaW4gdGhlIHByb2JsZW0gZGVzY3JpcHRpb24uCnN0cnVjdCBlbXBsb3llZSB7CiAgICBpbnQgY2xvY2tOdW1iZXI7CiAgICBmbG9hdCB3YWdlOwogICAgZmxvYXQgaG91cnM7CiAgICBmbG9hdCBvdmVydGltZUhvdXJzOwogICAgZmxvYXQgZ3Jvc3NQYXk7Cn07CgovLyBjYWxjdWxhdGUgb3ZlcnRpbWUgaG91cnMuCi8vIEl0IHRha2VzIGEgcG9pbnRlciB0byBhbiBlbXBsb3llZSBzdHJ1Y3R1cmUgYW5kIHVwZGF0ZXMgdGhlIG92ZXJ0aW1lSG91cnMgZmllbGQuCnZvaWQgY2FsY3VsYXRlT3ZlcnRpbWUoc3RydWN0IGVtcGxveWVlICplbXApIHsKICAgIGlmIChlbXAtPmhvdXJzID4gNDAuMCkgewogICAgICAgIGVtcC0+b3ZlcnRpbWVIb3VycyA9IGVtcC0+aG91cnMgLSA0MC4wOwogICAgfSBlbHNlIHsKICAgICAgICBlbXAtPm92ZXJ0aW1lSG91cnMgPSAwLjA7CiAgICB9Cn0KCi8vIGNhbGN1bGF0ZSBncm9zcyBwYXkuCi8vIEl0IHRha2VzIGEgcG9pbnRlciB0byBhbiBlbXBsb3llZSBzdHJ1Y3R1cmUgYW5kIHVwZGF0ZXMgdGhlIGdyb3NzUGF5IGZpZWxkLgp2b2lkIGNhbGN1bGF0ZUdyb3NzUGF5KHN0cnVjdCBlbXBsb3llZSAqZW1wKSB7CiAgICBmbG9hdCBub3JtYWxIb3VycyA9IGVtcC0+aG91cnMgPiA0MC4wID8gNDAuMCA6IGVtcC0+aG91cnM7CiAgICBmbG9hdCBvdmVydGltZUhvdXJzID0gZW1wLT5vdmVydGltZUhvdXJzOwogICAgCiAgICBmbG9hdCBub3JtYWxQYXkgPSBub3JtYWxIb3VycyAqIGVtcC0+d2FnZTsKICAgIGZsb2F0IG92ZXJ0aW1lUGF5ID0gb3ZlcnRpbWVIb3VycyAqIGVtcC0+d2FnZSAqIDEuNTsKICAgIAogICAgZW1wLT5ncm9zc1BheSA9IG5vcm1hbFBheSArIG92ZXJ0aW1lUGF5Owp9CgppbnQgbWFpbigpIHsKICAgIC8vVXNlZCBhIGxvY2FsIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBlbXBsb3llZSBpbmZvcm1hdGlvbi4KICAgIHN0cnVjdCBlbXBsb3llZSBlbXBsb3llZXNbNV0gPSB7CiAgICAgICAgezk4NDAxLCAxMC4wMCwgMC4wLCAwLjAsIDAuMH0sCiAgICAgICAgezUyNjQ4OCwgOS43NSwgMC4wLCAwLjAsIDAuMH0sCiAgICAgICAgezc2MzM0OSwgMTAuNTAsIDAuMCwgMC4wLCAwLjB9LAogICAgICAgIHszNDA0NSwgMTIuMjUsIDAuMCwgMC4wLCAwLjB9LAogICAgICAgIHsxMjc2MTUsIDguMzUsIDAuMCwgMC4wLCAwLjB9CiAgICB9OwogICAgCiAgICAvLyBUaGUgcHJvYmxlbSBzcGVjaWZpZXMgdG8gdXNlIHRoZXNlIGhvdXJzIGFzIGlucHV0LgogICAgZmxvYXQgaG91cnNJbnB1dFtdID0gezMxLjAsIDQyLjUsIDM3LjAsIDAuMCwgMC4wfTsKICAgIAogICAgLy8gQ2FsbCBmdW5jdGlvbnMgYXMgbmVlZGVkIHRvIHJlYWQgYW5kIGNhbGN1bGF0ZSBpbmZvcm1hdGlvbi4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgLy8gQXNzaWduIHRoZSBnaXZlbiBob3VycyB0byB0aGUgY3VycmVudCBlbXBsb3llZS4KICAgICAgICBlbXBsb3llZXNbaV0uaG91cnMgPSBob3Vyc0lucHV0W2ldOwogICAgICAgIAogICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9ucyB0byBjYWxjdWxhdGUgdGhlIG92ZXJ0aW1lIGhvdXJzIGFuZCBncm9zcyBwYXkuCiAgICAgICAgY2FsY3VsYXRlT3ZlcnRpbWUoJmVtcGxveWVlc1tpXSk7CiAgICAgICAgY2FsY3VsYXRlR3Jvc3NQYXkoJmVtcGxveWVlc1tpXSk7CiAgICB9CiAgICAKICAgIC8vIFByaW50IHRoZSB0YWJsZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbHVtbiB0aXRsZXMuCiAgICBwcmludGYoIkNsb2NrICAgIFdhZ2UgICAgSG91cnMgICBPVCAgICAgIEdyb3NzXG4iKTsKICAgIHByaW50ZigiLS0tLS0tLSAgLS0tLS0tICAtLS0tLS0gIC0tLS0tLSAgLS0tLS0tXG4iKTsKICAgIAogICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBhcnJheSBhZ2FpbiB0byBwcmludCB0aGUgcmVzdWx0cyBpbiBhIGZvcm1hdHRlZCB0YWJsZS4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlMDZkICAgJTUuMmYgICU1LjFmICAlNS4xZiAgJTcuMmZcbiIsCiAgICAgICAgICAgICAgIGVtcGxveWVlc1tpXS5jbG9ja051bWJlciwKICAgICAgICAgICAgICAgZW1wbG95ZWVzW2ldLndhZ2UsCiAgICAgICAgICAgICAgIGVtcGxveWVlc1tpXS5ob3VycywKICAgICAgICAgICAgICAgZW1wbG95ZWVzW2ldLm92ZXJ0aW1lSG91cnMsCiAgICAgICAgICAgICAgIGVtcGxveWVlc1tpXS5ncm9zc1BheSk7CiAgICB9CiAgICAKICAgIHJldHVybiAwOwp9CgoK