//********************************************************
//
// Assignment 7 - structure
//
// Name: Jesus Castillo
//
// Class: C Programming, Summer, 2025
//
// Date: 7/13/2025
//
// Description: Write a C program that will calculate
// thegross pay of a set of employees. Continue
// to use all the features from your past assignments.
// In particular, expand upon your previous assignment
// and continue to use multiple functions and constants
// to help with various tasks called upon by your program.
//
// All functions are called by value
//
//********************************************************
#include <stdio.h>
#include <string.h>
#define SIZE 5
#define STD_HOURS 40.0
#define OT_RATE 1.5
struct name {
char firstName [10];
char lastName [10];
};
struct employee {
struct name empName;
char taxState[3];
long int clockNumber;
float wageRate;
float hours;
float overtimeHrs;
float grossPay;
float stateTax;
float fedTax;
float netPay;
};
// constants
struct employeeData {
char taxState[3];
long int clockNumber;
float wageRate;
float hours;
float overtimeHrs;
float grossPay;
float stateTax;
float fedTax;
float netPay;
};
int main() {
struct employee employeeData[SIZE] = {
{{"Connie", "Cobol"}, "MA", 98401, 10.60, 51.0},
{{"Mary", "Apa"}, "CA", 526488, 9.75, 42.5},
{{"Frank", "Fortran"},"VT", 765349, 10.50, 37.0},
{{"Jeff", "Ada"}, "NH", 34645, 12.25, 45.0},
{{"Anton", "Pascal"},"MA", 127615, 8.25, 0.0}
};
float calcFedTax(float grossPay) {
return grossPay * 0.15;
};
float calcNetPay(float grossPay, float stateTax, float fedTax) {
return grossPay - stateTax - fedTax;
};
float calcOvertime(float hours) {
return (hours > STD_HOURS) ? hours - STD_HOURS : 0.0;
};
float calcStateTax(char state[], float grossPay) {
return grossPay * 0.05;
else if (strcmp(state
, "NH") == 0) return 0.0;
else if (strcmp(state
, "VT") == 0) return grossPay * 0.06;
else if (strcmp(state
, "CA") == 0) return grossPay * 0.07;
else return 0.0;
}
// Function to calculate gross pay
float calcGross(float wage, float hours, float overtime) {
return (hours > STD_HOURS)
? (STD_HOURS * wage) + (overtime * wage * OT_RATE)
: hours * wage;
}
printf("\n%-6s %-7s %-6s %-6s %-8s %-8s %-8s %-8s\n", "Clock#", "Wage", "Hours", " OT", " Gross", " State", " Fed", " Net");
printf("-----------------------------------------------------------------\n");
// Display employee data
for (int i = 0; i < SIZE; ++i) {
employeeData[i].overtimeHrs = calcOvertime(employeeData[i].hours);
employeeData[i].grossPay = calcGross(employeeData[i].wageRate,
employeeData[i].hours, employeeData[i].overtimeHrs);
employeeData[i].stateTax = calcStateTax(employeeData[i].taxState,
employeeData[i].grossPay);
employeeData[i].fedTax = calcFedTax(employeeData[i].grossPay);
employeeData[i].netPay = calcNetPay(employeeData[i].grossPay,
employeeData[i].stateTax, employeeData[i].fedTax
);
printf("%06ld %7.2f %6.1f %6.1f %8.2f %8.2f %8.2f %8.2f\n", employeeData[i].clockNumber,
employeeData[i].wageRate,
employeeData[i].hours,
employeeData[i].overtimeHrs,
employeeData[i].grossPay,
employeeData[i].stateTax,
employeeData[i].fedTax,
employeeData[i].netPay);
};
return 0;
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBBc3NpZ25tZW50IDcgLSBzdHJ1Y3R1cmUKLy8KLy8gTmFtZTogSmVzdXMgQ2FzdGlsbG8KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIFN1bW1lciwgMjAyNQovLwovLyBEYXRlOiA3LzEzLzIwMjUKLy8KLy8gRGVzY3JpcHRpb246IFdyaXRlIGEgQyBwcm9ncmFtIHRoYXQgd2lsbCBjYWxjdWxhdGUgCi8vIHRoZWdyb3NzIHBheSBvZiBhIHNldCBvZiBlbXBsb3llZXMuICBDb250aW51ZQovLyB0byB1c2UgYWxsIHRoZSBmZWF0dXJlcyBmcm9tIHlvdXIgcGFzdCBhc3NpZ25tZW50cy4KLy8gSW4gcGFydGljdWxhciwgZXhwYW5kIHVwb24geW91ciBwcmV2aW91cyBhc3NpZ25tZW50Ci8vIGFuZCBjb250aW51ZSB0byB1c2UgbXVsdGlwbGUgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMKLy8gdG8gaGVscCB3aXRoIHZhcmlvdXMgdGFza3MgY2FsbGVkIHVwb24gYnkgeW91ciBwcm9ncmFtLgovLwovLyBBbGwgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgdmFsdWUKLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBTSVpFIDUKI2RlZmluZSBTVERfSE9VUlMgNDAuMAojZGVmaW5lIE9UX1JBVEUgMS41CgoKc3RydWN0IG5hbWUgewogICAgY2hhciBmaXJzdE5hbWUgWzEwXTsKICAgIGNoYXIgbGFzdE5hbWUgIFsxMF07Cn07CgoKCnN0cnVjdCBlbXBsb3llZSB7CiAgICBzdHJ1Y3QgbmFtZSBlbXBOYW1lOwogICAgY2hhciB0YXhTdGF0ZVszXTsKICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyOwogICAgZmxvYXQgd2FnZVJhdGU7CiAgICBmbG9hdCBob3VyczsKICAgIGZsb2F0IG92ZXJ0aW1lSHJzOwogICAgZmxvYXQgZ3Jvc3NQYXk7CiAgICBmbG9hdCBzdGF0ZVRheDsKICAgIGZsb2F0IGZlZFRheDsKICAgIGZsb2F0IG5ldFBheTsKfTsKCi8vIGNvbnN0YW50cwogICAgc3RydWN0ICBlbXBsb3llZURhdGEgewogICAgY2hhciB0YXhTdGF0ZVszXTsKICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyOwogICAgZmxvYXQgd2FnZVJhdGU7CiAgICBmbG9hdCBob3VyczsKICAgIGZsb2F0IG92ZXJ0aW1lSHJzOwogICAgZmxvYXQgZ3Jvc3NQYXk7CiAgICBmbG9hdCBzdGF0ZVRheDsKICAgIGZsb2F0IGZlZFRheDsKICAgIGZsb2F0IG5ldFBheTsKfTsKCgppbnQgbWFpbigpIHsKCnN0cnVjdCBlbXBsb3llZSBlbXBsb3llZURhdGFbU0laRV0gPSB7CiAgICB7eyJDb25uaWUiLCAiQ29ib2wifSwgIk1BIiwgOTg0MDEsIDEwLjYwLCA1MS4wfSwKICAgIHt7Ik1hcnkiLCAgICJBcGEifSwgICAiQ0EiLCA1MjY0ODgsIDkuNzUsIDQyLjV9LAogICAge3siRnJhbmsiLCAgIkZvcnRyYW4ifSwiVlQiLCA3NjUzNDksIDEwLjUwLCAzNy4wfSwKICAgIHt7IkplZmYiLCAgICJBZGEifSwgICAiTkgiLCAzNDY0NSwgMTIuMjUsIDQ1LjB9LAogICAge3siQW50b24iLCAgIlBhc2NhbCJ9LCJNQSIsIDEyNzYxNSwgOC4yNSwgMC4wfQp9OwoKZmxvYXQgY2FsY0ZlZFRheChmbG9hdCBncm9zc1BheSkgewogICAgcmV0dXJuIGdyb3NzUGF5ICogMC4xNTsKfTsKCmZsb2F0IGNhbGNOZXRQYXkoZmxvYXQgZ3Jvc3NQYXksIGZsb2F0IHN0YXRlVGF4LCBmbG9hdCBmZWRUYXgpIHsKICAgIHJldHVybiBncm9zc1BheSAtIHN0YXRlVGF4IC0gZmVkVGF4Owp9OwpmbG9hdCBjYWxjT3ZlcnRpbWUoZmxvYXQgaG91cnMpIHsKICAgIHJldHVybiAoaG91cnMgPiBTVERfSE9VUlMpID8gaG91cnMgLSBTVERfSE9VUlMgOiAwLjA7Cn07CgpmbG9hdCBjYWxjU3RhdGVUYXgoY2hhciBzdGF0ZVtdLCBmbG9hdCBncm9zc1BheSkgewogICAgaWYgKHN0cmNtcChzdGF0ZSwgIk1BIikgPT0gMCkgCiAgICByZXR1cm4gZ3Jvc3NQYXkgKiAwLjA1OwogICAgCiAgICBlbHNlIGlmIChzdHJjbXAoc3RhdGUsICJOSCIpID09IDApIAogICAgcmV0dXJuIDAuMDsKICAgIAogICAgZWxzZSBpZiAoc3RyY21wKHN0YXRlLCAiVlQiKSA9PSAwKSAKICAgIHJldHVybiBncm9zc1BheSAqIDAuMDY7CiAgICAKICAgIGVsc2UgaWYgKHN0cmNtcChzdGF0ZSwgIkNBIikgPT0gMCkgCiAgICByZXR1cm4gZ3Jvc3NQYXkgKiAwLjA3OwogICAgCiAgICBlbHNlIHJldHVybiAwLjA7CiAgCiAgIAp9CgoKLy8gRnVuY3Rpb24gdG8gY2FsY3VsYXRlIGdyb3NzIHBheQpmbG9hdCBjYWxjR3Jvc3MoZmxvYXQgd2FnZSwgZmxvYXQgaG91cnMsIGZsb2F0IG92ZXJ0aW1lKSB7CiAgICByZXR1cm4gKGhvdXJzID4gU1REX0hPVVJTKQogICAgICAgID8gKFNURF9IT1VSUyAqIHdhZ2UpICsgKG92ZXJ0aW1lICogd2FnZSAqIE9UX1JBVEUpCiAgICAgICAgOiBob3VycyAqIHdhZ2U7Cn0KIApwcmludGYoIlxuJS02cyAgJS03cyAlLTZzICUtNnMgJS04cyAlLThzICUtOHMgJS04c1xuIiwKICAgICAgICAgICAiQ2xvY2sjIiwgIldhZ2UiLCAiSG91cnMiLCAiICBPVCIsICIgR3Jvc3MiLCAiICBTdGF0ZSIsICIgICBGZWQiLCAiICBOZXQiKTsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIC8vIERpc3BsYXkgZW1wbG95ZWUgZGF0YQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTSVpFOyArK2kpIHsKICAgICAgICBlbXBsb3llZURhdGFbaV0ub3ZlcnRpbWVIcnMgPSBjYWxjT3ZlcnRpbWUoZW1wbG95ZWVEYXRhW2ldLmhvdXJzKTsKICAgICAgICBlbXBsb3llZURhdGFbaV0uZ3Jvc3NQYXkgPSBjYWxjR3Jvc3MoZW1wbG95ZWVEYXRhW2ldLndhZ2VSYXRlLCAKICAgICAgICBlbXBsb3llZURhdGFbaV0uaG91cnMsIGVtcGxveWVlRGF0YVtpXS5vdmVydGltZUhycyk7CiAgICAgICAgZW1wbG95ZWVEYXRhW2ldLnN0YXRlVGF4ID0gY2FsY1N0YXRlVGF4KGVtcGxveWVlRGF0YVtpXS50YXhTdGF0ZSwgCiAgICAgICAgZW1wbG95ZWVEYXRhW2ldLmdyb3NzUGF5KTsKICAgICAgICBlbXBsb3llZURhdGFbaV0uZmVkVGF4ID0gY2FsY0ZlZFRheChlbXBsb3llZURhdGFbaV0uZ3Jvc3NQYXkpOwogICAgICAgIGVtcGxveWVlRGF0YVtpXS5uZXRQYXkgPSBjYWxjTmV0UGF5KGVtcGxveWVlRGF0YVtpXS5ncm9zc1BheSwgCiAgICAgICAgZW1wbG95ZWVEYXRhW2ldLnN0YXRlVGF4LCBlbXBsb3llZURhdGFbaV0uZmVkVGF4CiAgICAgICAgKTsKCiAgICAgICAgcHJpbnRmKCIlMDZsZCAlNy4yZiAlNi4xZiAlNi4xZiAlOC4yZiAlOC4yZiAlOC4yZiAlOC4yZlxuIiwKICAgICAgICAgICAgZW1wbG95ZWVEYXRhW2ldLmNsb2NrTnVtYmVyLAogICAgICAgICAgICBlbXBsb3llZURhdGFbaV0ud2FnZVJhdGUsCiAgICAgICAgICAgIGVtcGxveWVlRGF0YVtpXS5ob3VycywKICAgICAgICAgICAgZW1wbG95ZWVEYXRhW2ldLm92ZXJ0aW1lSHJzLAogICAgICAgIGVtcGxveWVlRGF0YVtpXS5ncm9zc1BheSwKICAgICAgICBlbXBsb3llZURhdGFbaV0uc3RhdGVUYXgsCiAgICAgICAgZW1wbG95ZWVEYXRhW2ldLmZlZFRheCwKICAgICAgICBlbXBsb3llZURhdGFbaV0ubmV0UGF5KTsKICAgICAgICAKICAgIAogICAgfTsKICAKIHJldHVybiAwOwogIAoKICAgIH0KICAgIAogICAgCiAgICAKIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAg