#include <stdio.h>
// Constants
#define SIZE 5
#define OVERTIME_RATE 1.5
#define STD_WORK_WEEK 40.0
// Function prototypes
float getHours( long int clockNumber) ;
void printHeader( void ) ;
void printEmp( long int clockNumber, float wageRate, float hours, float overtimeHrs, float grossPay) ;
float calculateOvertime( float hours) ;
float calculateGrossPay( float wageRate, float hours, float overtimeHrs) ;
int main( ) {
// Employee data
long int clockNumber[ SIZE] = { 98401 , 52648 , 76534 , 34645 , 12761 } ;
float grossPay[ SIZE] ;
float hours[ SIZE] ;
float overtimeHrs[ SIZE] ;
float wageRate[ SIZE] = { 10.60 , 9.75 , 10.50 , 12.25 , 8.35 } ;
// Process each employee
for ( int i = 0 ; i < SIZE; i++ ) {
// Read hours for employee
hours[ i] = getHours( clockNumber[ i] ) ;
// Calculate overtime hours
overtimeHrs[ i] = calculateOvertime( hours[ i] ) ;
// Calculate gross pay
grossPay[ i] = calculateGrossPay( wageRate[ i] , hours[ i] , overtimeHrs[ i] ) ;
}
// Print the header info
printHeader( ) ;
// Print all employees
for ( int i = 0 ; i < SIZE; i++ ) {
printEmp( clockNumber[ i] , wageRate[ i] , hours[ i] , overtimeHrs[ i] , grossPay[ i] ) ;
}
return 0 ;
}
// Function: getHours
// Purpose: Obtains input from user, the number of hours worked per employee and stores the result.
float getHours( long int clockNumber) {
float hoursWorked;
printf ( "Enter hours worked for employee ID %ld: " , clockNumber
) ; scanf ( "%f" , & hoursWorked
) ; return hoursWorked;
}
// Function: printHeader
// Purpose: Prints the header for the employee summary output
void printHeader( void ) {
printf ( "\n Employee Summary:\n " ) ; printf ( "---------------------------------------------------------\n " ) ; printf ( "Employee ID | Wage Rate | Hours Worked | Overtime Hours | Gross Pay\n " ) ; printf ( "---------------------------------------------------------\n " ) ; }
// Function: printEmp
// Purpose: Prints the details for each employee
void printEmp( long int clockNumber, float wageRate, float hours, float overtimeHrs, float grossPay) {
printf ( "%10ld | %9.2f | %12.2f | %14.2f | %9.2f\n " , clockNumber
, wageRate
, hours
, overtimeHrs
, grossPay
) ; }
// Function: calculateOvertime
// Purpose: Calculates the overtime hours worked
float calculateOvertime( float hours) {
if ( hours > STD_WORK_WEEK) {
return hours - STD_WORK_WEEK;
}
return 0.0 ;
}
// Function: calculateGrossPay
// Purpose: Calculates the gross pay based on wage rate, hours worked, and overtime
float calculateGrossPay( float wageRate, float hours, float overtimeHrs) {
float regularPay = wageRate * ( hours - overtimeHrs) ;
float overtimePay = overtimeHrs * wageRate * OVERTIME_RATE;
return regularPay + overtimePay;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBDb25zdGFudHMKI2RlZmluZSBTSVpFIDUKI2RlZmluZSBPVkVSVElNRV9SQVRFIDEuNQojZGVmaW5lIFNURF9XT1JLX1dFRUsgNDAuMAoKLy8gRnVuY3Rpb24gcHJvdG90eXBlcwpmbG9hdCBnZXRIb3Vycyhsb25nIGludCBjbG9ja051bWJlcik7CnZvaWQgcHJpbnRIZWFkZXIodm9pZCk7CnZvaWQgcHJpbnRFbXAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KTsKZmxvYXQgY2FsY3VsYXRlT3ZlcnRpbWUoZmxvYXQgaG91cnMpOwpmbG9hdCBjYWxjdWxhdGVHcm9zc1BheShmbG9hdCB3YWdlUmF0ZSwgZmxvYXQgaG91cnMsIGZsb2F0IG92ZXJ0aW1lSHJzKTsKCmludCBtYWluKCkgewogICAgLy8gRW1wbG95ZWUgZGF0YQogICAgbG9uZyBpbnQgY2xvY2tOdW1iZXJbU0laRV0gPSB7OTg0MDEsIDUyNjQ4LCA3NjUzNCwgMzQ2NDUsIDEyNzYxfTsKICAgIGZsb2F0IGdyb3NzUGF5W1NJWkVdOwogICAgZmxvYXQgaG91cnNbU0laRV07CiAgICBmbG9hdCBvdmVydGltZUhyc1tTSVpFXTsKICAgIGZsb2F0IHdhZ2VSYXRlW1NJWkVdID0gezEwLjYwLCA5Ljc1LCAxMC41MCwgMTIuMjUsIDguMzV9OwogICAgCiAgICAvLyBQcm9jZXNzIGVhY2ggZW1wbG95ZWUKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU0laRTsgaSsrKSB7CiAgICAgICAgLy8gUmVhZCBob3VycyBmb3IgZW1wbG95ZWUKICAgICAgICBob3Vyc1tpXSA9IGdldEhvdXJzKGNsb2NrTnVtYmVyW2ldKTsKICAgICAgICAKICAgICAgICAvLyBDYWxjdWxhdGUgb3ZlcnRpbWUgaG91cnMKICAgICAgICBvdmVydGltZUhyc1tpXSA9IGNhbGN1bGF0ZU92ZXJ0aW1lKGhvdXJzW2ldKTsKICAgICAgICAKICAgICAgICAvLyBDYWxjdWxhdGUgZ3Jvc3MgcGF5CiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBjYWxjdWxhdGVHcm9zc1BheSh3YWdlUmF0ZVtpXSwgaG91cnNbaV0sIG92ZXJ0aW1lSHJzW2ldKTsKICAgIH0KCiAgICAvLyBQcmludCB0aGUgaGVhZGVyIGluZm8KICAgIHByaW50SGVhZGVyKCk7CiAgICAKICAgIC8vIFByaW50IGFsbCBlbXBsb3llZXMKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU0laRTsgaSsrKSB7CiAgICAgICAgcHJpbnRFbXAoY2xvY2tOdW1iZXJbaV0sIHdhZ2VSYXRlW2ldLCBob3Vyc1tpXSwgb3ZlcnRpbWVIcnNbaV0sIGdyb3NzUGF5W2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8gRnVuY3Rpb246IGdldEhvdXJzCi8vIFB1cnBvc2U6IE9idGFpbnMgaW5wdXQgZnJvbSB1c2VyLCB0aGUgbnVtYmVyIG9mIGhvdXJzIHdvcmtlZCBwZXIgZW1wbG95ZWUgYW5kIHN0b3JlcyB0aGUgcmVzdWx0LgpmbG9hdCBnZXRIb3Vycyhsb25nIGludCBjbG9ja051bWJlcikgewogICAgZmxvYXQgaG91cnNXb3JrZWQ7CiAgICBwcmludGYoIkVudGVyIGhvdXJzIHdvcmtlZCBmb3IgZW1wbG95ZWUgSUQgJWxkOiAiLCBjbG9ja051bWJlcik7CiAgICBzY2FuZigiJWYiLCAmaG91cnNXb3JrZWQpOwogICAgcmV0dXJuIGhvdXJzV29ya2VkOwp9CgovLyBGdW5jdGlvbjogcHJpbnRIZWFkZXIKLy8gUHVycG9zZTogUHJpbnRzIHRoZSBoZWFkZXIgZm9yIHRoZSBlbXBsb3llZSBzdW1tYXJ5IG91dHB1dAp2b2lkIHByaW50SGVhZGVyKHZvaWQpIHsKICAgIHByaW50ZigiXG5FbXBsb3llZSBTdW1tYXJ5OlxuIik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICBwcmludGYoIkVtcGxveWVlIElEIHwgV2FnZSBSYXRlIHwgSG91cnMgV29ya2VkIHwgT3ZlcnRpbWUgSG91cnMgfCBHcm9zcyBQYXlcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwp9CgovLyBGdW5jdGlvbjogcHJpbnRFbXAKLy8gUHVycG9zZTogUHJpbnRzIHRoZSBkZXRhaWxzIGZvciBlYWNoIGVtcGxveWVlCnZvaWQgcHJpbnRFbXAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KSB7CiAgICBwcmludGYoIiUxMGxkIHwgJTkuMmYgfCAlMTIuMmYgfCAlMTQuMmYgfCAlOS4yZlxuIiwgY2xvY2tOdW1iZXIsIHdhZ2VSYXRlLCBob3Vycywgb3ZlcnRpbWVIcnMsIGdyb3NzUGF5KTsKfQoKLy8gRnVuY3Rpb246IGNhbGN1bGF0ZU92ZXJ0aW1lCi8vIFB1cnBvc2U6IENhbGN1bGF0ZXMgdGhlIG92ZXJ0aW1lIGhvdXJzIHdvcmtlZApmbG9hdCBjYWxjdWxhdGVPdmVydGltZShmbG9hdCBob3VycykgewogICAgaWYgKGhvdXJzID4gU1REX1dPUktfV0VFSykgewogICAgICAgIHJldHVybiBob3VycyAtIFNURF9XT1JLX1dFRUs7CiAgICB9CiAgICByZXR1cm4gMC4wOwp9CgovLyBGdW5jdGlvbjogY2FsY3VsYXRlR3Jvc3NQYXkKLy8gUHVycG9zZTogQ2FsY3VsYXRlcyB0aGUgZ3Jvc3MgcGF5IGJhc2VkIG9uIHdhZ2UgcmF0ZSwgaG91cnMgd29ya2VkLCBhbmQgb3ZlcnRpbWUKZmxvYXQgY2FsY3VsYXRlR3Jvc3NQYXkoZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycykgewogICAgZmxvYXQgcmVndWxhclBheSA9IHdhZ2VSYXRlICogKGhvdXJzIC0gb3ZlcnRpbWVIcnMpOwogICAgZmxvYXQgb3ZlcnRpbWVQYXkgPSBvdmVydGltZUhycyAqIHdhZ2VSYXRlICogT1ZFUlRJTUVfUkFURTsKICAgIHJldHVybiByZWd1bGFyUGF5ICsgb3ZlcnRpbWVQYXk7Cn0=