#include <stdio.h>
// Constants
#define SIZE 5
#define OVERTIME_RATE 1.5f
#define STD_WORK_WEEK 40.0f
// 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( ) {
// Variable Declarations
long int clockNumber[ SIZE] = { 98401 , 526488 , 765349 , 34645 , 127615 } ; // ID
float grossPay[ SIZE] ; // Gross pay
float hours[ SIZE] ; // Hours worked in a given week
float overtimeHrs[ SIZE] ; // Overtime hours
float wageRate[ SIZE] = { 10.60 , 9.75 , 10.50 , 12.25 , 8.35 } ; // Hourly wage rate
int i; // Loop index
// Process each employee
for ( i = 0 ; i < SIZE; ++ i) {
hours[ i] = getHours( clockNumber[ i] ) ;
overtimeHrs[ i] = calculateOvertime( hours[ i] ) ;
grossPay[ i] = calculateGrossPay( wageRate[ i] , hours[ i] , overtimeHrs[ i] ) ;
}
// Print the header info
printHeader( ) ;
// Print out each employee's details
for ( i = 0 ; i < SIZE; ++ i) {
printEmp( clockNumber[ i] , wageRate[ i] , hours[ i] , overtimeHrs[ i] , grossPay[ i] ) ;
}
return 0 ;
}
// Function to get hours worked from user
float getHours( long int clockNumber) {
float hoursWorked;
printf ( "\n Enter hours worked by emp # %06li: " , clockNumber
) ; scanf ( "%f" , & hoursWorked
) ; return hoursWorked;
}
// Function to print the table header
void printHeader( void ) {
printf ( "\n *** Pay Calculator ***\n \n " ) ; printf ( "Clock# Wage Hours OT Gross\n " ) ; printf ( "------------------------------------\n " ) ; }
// Function to print employee details
void printEmp( long int clockNumber, float wageRate, float hours,
float overtimeHrs, float grossPay) {
printf ( "%06li %.2f %.2f %.2f %.2f\n " , clockNumber, wageRate, hours, overtimeHrs, grossPay) ;
}
// Function to calculate overtime hours
float calculateOvertime( float hours) {
return ( hours > STD_WORK_WEEK) ? ( hours - STD_WORK_WEEK) : 0.0f ;
}
// Function to calculate gross pay
float calculateGrossPay( float wageRate, float hours, float overtimeHrs) {
float regularPay = wageRate * ( hours - overtimeHrs) ;
float overtimePay = overtimeHrs * ( wageRate * OVERTIME_RATE) ;
return regularPay + overtimePay;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBDb25zdGFudHMKI2RlZmluZSBTSVpFIDUKI2RlZmluZSBPVkVSVElNRV9SQVRFIDEuNWYKI2RlZmluZSBTVERfV09SS19XRUVLIDQwLjBmCgovLyBGdW5jdGlvbiBwcm90b3R5cGVzCmZsb2F0IGdldEhvdXJzKGxvbmcgaW50IGNsb2NrTnVtYmVyKTsKdm9pZCBwcmludEhlYWRlcih2b2lkKTsKdm9pZCBwcmludEVtcChsb25nIGludCBjbG9ja051bWJlciwgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCAKICAgICAgICAgICAgICBmbG9hdCBvdmVydGltZUhycywgZmxvYXQgZ3Jvc3NQYXkpOwpmbG9hdCBjYWxjdWxhdGVPdmVydGltZShmbG9hdCBob3Vycyk7CmZsb2F0IGNhbGN1bGF0ZUdyb3NzUGF5KGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMpOwoKaW50IG1haW4oKSB7CiAgICAvLyBWYXJpYWJsZSBEZWNsYXJhdGlvbnMKICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyW1NJWkVdID0gezk4NDAxLCA1MjY0ODgsIDc2NTM0OSwgMzQ2NDUsIDEyNzYxNX07IC8vIElECiAgICBmbG9hdCBncm9zc1BheVtTSVpFXTsgICAvLyBHcm9zcyBwYXkKICAgIGZsb2F0IGhvdXJzW1NJWkVdOyAgICAgIC8vIEhvdXJzIHdvcmtlZCBpbiBhIGdpdmVuIHdlZWsKICAgIGZsb2F0IG92ZXJ0aW1lSHJzW1NJWkVdOyAvLyBPdmVydGltZSBob3VycwogICAgZmxvYXQgd2FnZVJhdGVbU0laRV0gPSB7MTAuNjAsIDkuNzUsIDEwLjUwLCAxMi4yNSwgOC4zNX07IC8vIEhvdXJseSB3YWdlIHJhdGUKICAgIGludCBpOyAgLy8gTG9vcCBpbmRleAoKICAgIC8vIFByb2Nlc3MgZWFjaCBlbXBsb3llZQogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkgewogICAgICAgIGhvdXJzW2ldID0gZ2V0SG91cnMoY2xvY2tOdW1iZXJbaV0pOwogICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gY2FsY3VsYXRlT3ZlcnRpbWUoaG91cnNbaV0pOwogICAgICAgIGdyb3NzUGF5W2ldID0gY2FsY3VsYXRlR3Jvc3NQYXkod2FnZVJhdGVbaV0sIGhvdXJzW2ldLCBvdmVydGltZUhyc1tpXSk7CiAgICB9CgogICAgLy8gUHJpbnQgdGhlIGhlYWRlciBpbmZvCiAgICBwcmludEhlYWRlcigpOwoKICAgIC8vIFByaW50IG91dCBlYWNoIGVtcGxveWVlJ3MgZGV0YWlscwogICAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkgewogICAgICAgIHByaW50RW1wKGNsb2NrTnVtYmVyW2ldLCB3YWdlUmF0ZVtpXSwgaG91cnNbaV0sIG92ZXJ0aW1lSHJzW2ldLCBncm9zc1BheVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCi8vIEZ1bmN0aW9uIHRvIGdldCBob3VycyB3b3JrZWQgZnJvbSB1c2VyCmZsb2F0IGdldEhvdXJzKGxvbmcgaW50IGNsb2NrTnVtYmVyKSB7CiAgICBmbG9hdCBob3Vyc1dvcmtlZDsKICAgIHByaW50ZigiXG5FbnRlciBob3VycyB3b3JrZWQgYnkgZW1wICMgJTA2bGk6ICIsIGNsb2NrTnVtYmVyKTsKICAgIHNjYW5mKCIlZiIsICZob3Vyc1dvcmtlZCk7CiAgICByZXR1cm4gaG91cnNXb3JrZWQ7Cn0KCi8vIEZ1bmN0aW9uIHRvIHByaW50IHRoZSB0YWJsZSBoZWFkZXIKdm9pZCBwcmludEhlYWRlcih2b2lkKSB7CiAgICBwcmludGYoIlxuKioqIFBheSBDYWxjdWxhdG9yICoqKlxuXG4iKTsKICAgIHByaW50ZigiQ2xvY2sjICAgV2FnZSAgSG91cnMgIE9UICAgICBHcm9zc1xuIik7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cn0KCi8vIEZ1bmN0aW9uIHRvIHByaW50IGVtcGxveWVlIGRldGFpbHMKdm9pZCBwcmludEVtcChsb25nIGludCBjbG9ja051bWJlciwgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCAKICAgICAgICAgICAgICBmbG9hdCBvdmVydGltZUhycywgZmxvYXQgZ3Jvc3NQYXkpIHsKICAgIHByaW50ZigiJTA2bGkgICUuMmYgICUuMmYgICUuMmYgICUuMmZcbiIsIAogICAgICAgICAgIGNsb2NrTnVtYmVyLCB3YWdlUmF0ZSwgaG91cnMsIG92ZXJ0aW1lSHJzLCBncm9zc1BheSk7Cn0KCi8vIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBvdmVydGltZSBob3VycwpmbG9hdCBjYWxjdWxhdGVPdmVydGltZShmbG9hdCBob3VycykgewogICAgcmV0dXJuIChob3VycyA+IFNURF9XT1JLX1dFRUspID8gKGhvdXJzIC0gU1REX1dPUktfV0VFSykgOiAwLjBmOwp9CgovLyBGdW5jdGlvbiB0byBjYWxjdWxhdGUgZ3Jvc3MgcGF5CmZsb2F0IGNhbGN1bGF0ZUdyb3NzUGF5KGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMpIHsKICAgIGZsb2F0IHJlZ3VsYXJQYXkgPSB3YWdlUmF0ZSAqIChob3VycyAtIG92ZXJ0aW1lSHJzKTsKICAgIGZsb2F0IG92ZXJ0aW1lUGF5ID0gb3ZlcnRpbWVIcnMgKiAod2FnZVJhdGUgKiBPVkVSVElNRV9SQVRFKTsKICAgIHJldHVybiByZWd1bGFyUGF5ICsgb3ZlcnRpbWVQYXk7Cn0=