//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Kamil Kurpiewski
//
// Class: C Programming, Fall, 2025
//
// Date: 10/2/2025
//
// 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 wageRate[ SIZE] = { 10.60 , 9.75 , 10.50 , 12.25 , 8.35 } ;
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
printf ( "\n *** Pay Calculator ***\n \n " ) ;
// Process each employee one at a time
for ( i = 0 ; i < SIZE; i++ )
{
printf ( "Enter hours worked for Employee %ld: " , clockNumber
[ i
] ) ;
//Read hours user types
// Calculate overtime and gross pay for employee
if ( hours[ i] >= STD_HOURS)
{
overtimeHrs[ i] = hours[ i] - STD_HOURS;
normalPay[ i] = STD_HOURS * wageRate[ i] ;
overtimePay[ i] = overtimeHrs[ i] * wageRate[ i] * OT_RATE;
}
else // no OT
{
overtimeHrs[ i] = 0 ;
normalPay[ i] = hours[ i] * wageRate[ i] ;
overtimePay[ i] = 0 ;
}
// Calculate Gross Pay
grossPay[ i] = normalPay[ i] + overtimePay[ i] ;
}
// Table header
printf ( "\n Clock# Wage Hours OT Gross\n " ) ; 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++ )
{
printf ( "%-8ld $%6.2f %6.2f %6.2f $%8.2f\n " , clockNumber[ i] ,
wageRate[ i] ,
hours[ i] ,
overtimeHrs[ i] ,
grossPay[ i] ) ;
}
return ( 0 ) ;
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIEFzc2lnbm1lbnQgNCAtIEFycmF5cwovLwovLyBOYW1lOiBLYW1pbCBLdXJwaWV3c2tpCi8vCi8vIENsYXNzOiBDIFByb2dyYW1taW5nLCBGYWxsLCAyMDI1Ci8vCi8vIERhdGU6IDEwLzIvMjAyNQovLwovLyBEZXNjcmlwdGlvbjogUHJvZ3JhbSB3aGljaCBkZXRlcm1pbmVzIG92ZXJ0aW1lIGFuZCAKLy8gZ3Jvc3MgcGF5IGZvciBhIHNldCBvZiBlbXBsb3llZXMgd2l0aCBvdXRwdXRzIHNlbnQgCi8vIHRvIHN0YW5kYXJkIG91dHB1dCAodGhlIHNjcmVlbikuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiNpbmNsdWRlIDxzdGRpby5oPgoKLy8gY29uc3RhbnRzIHRvIHVzZQojZGVmaW5lIFNJWkUgNSAgICAgICAgICAgLy8gbnVtYmVyIG9mIGVtcGxveWVlcyB0byBwcm9jZXNzCiNkZWZpbmUgU1REX0hPVVJTIDQwLjAgICAvLyBub3JtYWwgd29yayB3ZWVrIGhvdXJzIGJlZm9yZSBvdmVydGltZQojZGVmaW5lIE9UX1JBVEUgMS41ICAgICAgLy8gdGltZSBhbmQgaGFsZiBvdmVydGltZSBzZXR0aW5nCgppbnQgbWFpbigpCnsKCgogICAgLy8gRGVjbGFyZSB2YXJpYWJsZXMgbmVlZGVkIGZvciB0aGUgcHJvZ3JhbQogICAgLy8gUmVjb21tZW5kIGFuIGFycmF5IGZvciBjbG9jaywgd2FnZSwgaG91cnMsCiAgICAvLyAuLi4gYW5kIG92ZXJ0aW1lIGhvdXJzIGFuZCBncm9zcy4KICAgIC8vIFJlY29tbWVuZCBhcnJheXMgYWxzbyBmb3Igbm9ybWFsIHBheSBhbmQgb3ZlcnRpbWUgcGF5ICAgICAgICAgICAgICAgIAogICAgLy8gSXQgaXMgT0sgdG8gcHJlLWZpbGwgY2xvY2sgYW5kIHdhZ2UgdmFsdWVzIC4uLiBvciB5b3UgY2FuIHByb21wdCBmb3IgdGhlbQoKICAgIC8vIHVuaXF1ZSBlbXBsb3llZSBpZGVudGlmaWVyCiAgICBsb25nIGludCBjbG9ja051bWJlciBbU0laRV0gPSB7OTg0MDEsIDUyNjQ4OCwgNzY1MzQ5LCAzNDY0NSwgMTI3NjE1fTsKICAgIGZsb2F0IHdhZ2VSYXRlW1NJWkVdID0gezEwLjYwLCA5Ljc1LCAxMC41MCwgMTIuMjUsIDguMzV9OwogCiAgICBmbG9hdCBncm9zc1BheSBbU0laRV07ICAgICAvLyB3ZWVrbHkgZ3Jvc3MgcGF5IC0gbm9ybWFsIHBheSArIG92ZXJ0aW1lIHBheSAgICAgICAgIAogICAgZmxvYXQgaG91cnMgW1NJWkVdOyAgICAgICAgLy8gaG91cnMgd29ya2VkIGluIGEgZ2l2ZW4gd2VlawogICAgaW50IGk7ICAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCBhbmQgYXJyYXkgaW5kZXgKICAgIGZsb2F0IG5vcm1hbFBheSBbU0laRV07ICAgIC8vIG5vcm1hbCB3ZWVrbHkgcGF5IHdpdGhvdXQgYW55IG92ZXJ0aW1lCiAgICBmbG9hdCBvdmVydGltZUhyc1tTSVpFXTsgICAvLyBvdmVydGltZSBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrCiAgICBmbG9hdCBvdmVydGltZVBheSBbU0laRV07ICAvLyBvdmVydGltZSBwYXkgZm9yIGEgZ2l2ZW4gd2VlawogICAgCiAgICAKICAgIHByaW50ZiAoIlxuKioqIFBheSBDYWxjdWxhdG9yICoqKlxuXG4iKTsKCiAgICAvLyBQcm9jZXNzIGVhY2ggZW1wbG95ZWUgb25lIGF0IGEgdGltZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKICAgIHsKCiAgICAgICAgcHJpbnRmKCJFbnRlciBob3VycyB3b3JrZWQgZm9yIEVtcGxveWVlICVsZDogIiwgY2xvY2tOdW1iZXJbaV0pOwogICAgICAgIAogICAgICAgIC8vUmVhZCBob3VycyB1c2VyIHR5cGVzCiAgICAgICAgc2NhbmYoIiVmIiwgJmhvdXJzW2ldKTsKCiAgICAgICAgLy8gQ2FsY3VsYXRlIG92ZXJ0aW1lIGFuZCBncm9zcyBwYXkgZm9yIGVtcGxveWVlCiAgICAgICAgaWYgKGhvdXJzW2ldID49IFNURF9IT1VSUykKICAgICAgICB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gaG91cnNbaV0gLSBTVERfSE9VUlM7CiAgICAgICAgICAgIG5vcm1hbFBheVtpXSA9IFNURF9IT1VSUyAqIHdhZ2VSYXRlW2ldOwogICAgICAgICAgICBvdmVydGltZVBheVtpXSA9IG92ZXJ0aW1lSHJzW2ldICogd2FnZVJhdGVbaV0gKiBPVF9SQVRFOwogICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIGVsc2UgLy8gbm8gT1QKICAgICAgICB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gMDsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gaG91cnNbaV0gKiB3YWdlUmF0ZVtpXTsKICAgICAgICAgICAgb3ZlcnRpbWVQYXlbaV0gPSAwOwoKICAgICAgICB9CgogICAgICAgIC8vIENhbGN1bGF0ZSBHcm9zcyBQYXkKICAgICAgICBncm9zc1BheVtpXSA9IG5vcm1hbFBheVtpXSArIG92ZXJ0aW1lUGF5W2ldOwogICAgfQoKICAgIC8vIFRhYmxlIGhlYWRlcgogICAgcHJpbnRmKCJcbkNsb2NrIyAgICAgV2FnZSAgICAgSG91cnMgICAgIE9UICAgICBHcm9zc1xuIik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgIAoKICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiBvdXIgYXJyYXlzLCB3ZSBjYW4KICAgIC8vIEFjY2VzcyBlYWNoIGVtcGxveWVlIGFuZCBwcmludCB0byBzY3JlZW4gb3IgZmlsZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKICAgIHsKICAgICAgICBwcmludGYoIiUtOGxkICAkJTYuMmYgICU2LjJmICAlNi4yZiAgJCU4LjJmXG4iLAogICAgICAgIGNsb2NrTnVtYmVyW2ldLAogICAgICAgIHdhZ2VSYXRlW2ldLAogICAgICAgIGhvdXJzW2ldLAogICAgICAgIG92ZXJ0aW1lSHJzW2ldLAogICAgICAgIGdyb3NzUGF5W2ldKTsKICAgIH0KCiAgICByZXR1cm4oMCk7Cn0=