//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Matthew Chen
//
// Class: C Programming, Fall 2026
//
// Date: 9/28/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( )
{
// Declare variables needed for the program
// Recommend an array for clock, wage, hours,
// ... and overtime hours and gross.
// Recommend arrays also for normal pay and overtime pay
// It is OK to pre-fill clock and wage values ... or you can prompt for them
// 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 } ;
printf ( "\n *** Pay Calculator ***\n \n " ) ;
printf ( "-------------------------------------------------------------------------------\n " ) ;
// Process each employee one at a time
for ( i = 0 ; i < SIZE; i++ )
{
printf ( "Enter hours worked for employee %ld: " , clockNumber
[ i
] ) ;
// Calculate overtime and gross pay for employee
if ( hours[ i] >= STD_HOURS)
{
overtimeHrs[ i] = hours[ i] - STD_HOURS;
// Calculate arrays 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 arrays normalPay and overtimePay without overtime
normalPay[ i] = hours[ i] * wageRate[ i] ;
overtimePay[ i] = 0 ;
}
// Calculate Gross Pay
grossPay[ i] = normalPay[ i] + overtimePay[ i] ;
}
// Print a nice table header
printf ( "%-10s %-10s %-10s %-10s %-12s %-12s %-12s\n " , "Clock #" , "Wage" , "Hours" , "OT Hours" , "Normal Pay" , "OT Pay" , "Gross Pay" ) ; printf ( "-------------------------------------------------------------------------------\n " ) ;
// Now that we have all the information in our arrays, we can
// Access each employee and print to screen or file
for ( i = 0 ; i < SIZE; i++ )
{
// Print employee information from your arrays
printf ( "%-10ld %-10.2f %-10.2f %-10.2f %-12.2f %-12.2f %-12.2f\n " , clockNumber[ i] ,
wageRate[ i] ,
hours[ i] ,
overtimeHrs[ i] ,
normalPay[ i] ,
overtimePay[ i] ,
grossPay[ i] ) ;
}
return ( 0 ) ;
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIEFzc2lnbm1lbnQgNCAtIEFycmF5cwovLwovLyBOYW1lOiBNYXR0aGV3IENoZW4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIEZhbGwgMjAyNgovLwovLyBEYXRlOiA5LzI4LzIwMjYKLy8KLy8gRGVzY3JpcHRpb246IFByb2dyYW0gd2hpY2ggZGV0ZXJtaW5lcyBvdmVydGltZSBhbmQgCi8vIGdyb3NzIHBheSBmb3IgYSBzZXQgb2YgZW1wbG95ZWVzIHdpdGggb3V0cHV0cyBzZW50IAovLyB0byBzdGFuZGFyZCBvdXRwdXQgKHRoZSBzY3JlZW4pLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIGNvbnN0YW50cyB0byB1c2UKI2RlZmluZSBTSVpFIDUgICAgICAgICAgIC8vIG51bWJlciBvZiBlbXBsb3llZXMgdG8gcHJvY2VzcwojZGVmaW5lIFNURF9IT1VSUyA0MC4wICAgLy8gbm9ybWFsIHdvcmsgd2VlayBob3VycyBiZWZvcmUgb3ZlcnRpbWUKI2RlZmluZSBPVF9SQVRFIDEuNSAgICAgIC8vIHRpbWUgYW5kIGhhbGYgb3ZlcnRpbWUgc2V0dGluZwoKaW50IG1haW4oKQp7CgoKICAgIC8vIERlY2xhcmUgdmFyaWFibGVzIG5lZWRlZCBmb3IgdGhlIHByb2dyYW0KICAgIC8vIFJlY29tbWVuZCBhbiBhcnJheSBmb3IgY2xvY2ssIHdhZ2UsIGhvdXJzLAogICAgLy8gLi4uIGFuZCBvdmVydGltZSBob3VycyBhbmQgZ3Jvc3MuCiAgICAvLyBSZWNvbW1lbmQgYXJyYXlzIGFsc28gZm9yIG5vcm1hbCBwYXkgYW5kIG92ZXJ0aW1lIHBheSAgICAgICAgICAgICAgICAKICAgIC8vIEl0IGlzIE9LIHRvIHByZS1maWxsIGNsb2NrIGFuZCB3YWdlIHZhbHVlcyAuLi4gb3IgeW91IGNhbiBwcm9tcHQgZm9yIHRoZW0KCiAgICAvLyB1bmlxdWUgZW1wbG95ZWUgaWRlbnRpZmllcgogICAgbG9uZyBpbnQgY2xvY2tOdW1iZXIgW1NJWkVdID0gezk4NDAxLCA1MjY0ODgsIDc2NTM0OSwgMzQ2NDUsIDEyNzYxNX07CiAKICAgIGZsb2F0IGdyb3NzUGF5IFtTSVpFXTsgICAgIC8vIHdlZWtseSBncm9zcyBwYXkgLSBub3JtYWwgcGF5ICsgb3ZlcnRpbWUgcGF5ICAgICAgICAgCiAgICBmbG9hdCBob3VycyBbU0laRV07ICAgICAgICAvLyBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrCiAgICBpbnQgaTsgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIGFuZCBhcnJheSBpbmRleAogICAgZmxvYXQgbm9ybWFsUGF5IFtTSVpFXTsgICAgLy8gbm9ybWFsIHdlZWtseSBwYXkgd2l0aG91dCBhbnkgb3ZlcnRpbWUKICAgIGZsb2F0IG92ZXJ0aW1lSHJzW1NJWkVdOyAgIC8vIG92ZXJ0aW1lIGhvdXJzIHdvcmtlZCBpbiBhIGdpdmVuIHdlZWsKICAgIGZsb2F0IG92ZXJ0aW1lUGF5IFtTSVpFXTsgIC8vIG92ZXJ0aW1lIHBheSBmb3IgYSBnaXZlbiB3ZWVrCgogICAgLy8gaG91cmx5IHBheSBmb3IgZWFjaCBlbXBsb3llZQogICAgZmxvYXQgd2FnZVJhdGUgW1NJWkVdID0gezEwLjYsIDkuNzUsIDEwLjUsIDEyLjI1LCA4LjM1fTsgCgogICAgcHJpbnRmICgiXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG5cbiIpOwogICAgCiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKCiAgICAvLyBQcm9jZXNzIGVhY2ggZW1wbG95ZWUgb25lIGF0IGEgdGltZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKICAgIHsKCiAgICAgICAgIHByaW50ZigiRW50ZXIgaG91cnMgd29ya2VkIGZvciBlbXBsb3llZSAlbGQ6ICIsIGNsb2NrTnVtYmVyW2ldKTsKICAgICAgICAgc2NhbmYoIiVmIiwgJmhvdXJzW2ldKTsKCgogICAgICAgIC8vIENhbGN1bGF0ZSBvdmVydGltZSBhbmQgZ3Jvc3MgcGF5IGZvciBlbXBsb3llZQogICAgICAgIGlmIChob3Vyc1tpXSA+PSBTVERfSE9VUlMpCiAgICAgICAgewogICAgICAgICAgICBvdmVydGltZUhyc1tpXSA9IGhvdXJzW2ldIC0gU1REX0hPVVJTOwogICAgICAgICAgICAvLyAgQ2FsY3VsYXRlIGFycmF5cyBub3JtYWxQYXkgYW5kIG92ZXJ0aW1lUGF5IHdpdGggb3ZlcnRpbWUKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gU1REX0hPVVJTICogd2FnZVJhdGVbaV07CiAgICAgICAgICAgIG92ZXJ0aW1lUGF5W2ldID0gb3ZlcnRpbWVIcnNbaV0gKiB3YWdlUmF0ZVtpXSAqIE9UX1JBVEU7CiAgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgZWxzZSAvLyBubyBPVAogICAgICAgIHsKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSAwOwogICAgICAgICAgICAvLyBDYWxjdWxhdGUgYXJyYXlzIG5vcm1hbFBheSBhbmQgb3ZlcnRpbWVQYXkgd2l0aG91dCBvdmVydGltZQogICAgICAgICAgICBub3JtYWxQYXlbaV0gPSBob3Vyc1tpXSAqIHdhZ2VSYXRlW2ldOwogICAgICAgICAgICBvdmVydGltZVBheVtpXSA9IDA7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxjdWxhdGUgR3Jvc3MgUGF5CiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBub3JtYWxQYXlbaV0gKyBvdmVydGltZVBheVtpXTsKICAgIH0KCiAgICAvLyBQcmludCBhIG5pY2UgdGFibGUgaGVhZGVyCiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoIiUtMTBzICUtMTBzICUtMTBzICUtMTBzICUtMTJzICUtMTJzICUtMTJzXG4iLCAiQ2xvY2sgIyIsICJXYWdlIiwgIkhvdXJzIiwgIk9UIEhvdXJzIiwiTm9ybWFsIFBheSIsICJPVCBQYXkiLCAiR3Jvc3MgUGF5Iik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiBvdXIgYXJyYXlzLCB3ZSBjYW4KICAgIC8vIEFjY2VzcyBlYWNoIGVtcGxveWVlIGFuZCBwcmludCB0byBzY3JlZW4gb3IgZmlsZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKICAgIHsKICAgICAgICAvLyBQcmludCBlbXBsb3llZSBpbmZvcm1hdGlvbiBmcm9tIHlvdXIgYXJyYXlzCiAgICAgICAgcHJpbnRmKCIlLTEwbGQgJS0xMC4yZiAlLTEwLjJmICUtMTAuMmYgJS0xMi4yZiAlLTEyLjJmICUtMTIuMmZcbiIsCiAgICAgICAgICAgICAgIGNsb2NrTnVtYmVyW2ldLAogICAgICAgICAgICAgICB3YWdlUmF0ZVtpXSwKICAgICAgICAgICAgICAgaG91cnNbaV0sCiAgICAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldLAogICAgICAgICAgICAgICBub3JtYWxQYXlbaV0sCiAgICAgICAgICAgICAgIG92ZXJ0aW1lUGF5W2ldLAogICAgICAgICAgICAgICBncm9zc1BheVtpXSk7CiAgICB9CgogICAgcmV0dXJuKDApOwp9