#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 } ; // Employee IDs
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 variable
// Process each employee
for ( i = 0 ; i < SIZE; ++ i) {
// Read in 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 out each employee
for ( i = 0 ; i < SIZE; ++ i) {
printEmp( clockNumber[ i] , wageRate[ i] , hours[ i] , overtimeHrs[ i] , grossPay[ i] ) ;
}
return 0 ;
}
// Function to obtain hours worked from the user
float getHours( long int clockNumber) {
float hoursWorked;
printf ( "\n Enter hours worked by emp # %06li: " , clockNumber
) ; scanf ( "%f" , & hoursWorked
) ; return hoursWorked;
}
// 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 = ( hours - overtimeHrs) * wageRate;
float overtimePay = overtimeHrs * wageRate * OVERTIME_RATE;
return regularPay + overtimePay;
}
// Function to print the table header
void printHeader( void ) {
printf ( "\n \n *** Pay Calculator ***\n " ) ; printf ( "\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 %5.2f %5.1f %5.1f %7.2f\n " , clockNumber
, wageRate
, hours
, overtimeHrs
, grossPay
) ; }
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBjb25zdGFudHMKI2RlZmluZSBTSVpFIDUKI2RlZmluZSBPVkVSVElNRV9SQVRFIDEuNWYKI2RlZmluZSBTVERfV09SS19XRUVLIDQwLjBmCgovLyBmdW5jdGlvbiBwcm90b3R5cGVzCmZsb2F0IGdldEhvdXJzKGxvbmcgaW50IGNsb2NrTnVtYmVyKTsKdm9pZCBwcmludEhlYWRlcih2b2lkKTsKdm9pZCBwcmludEVtcChsb25nIGludCBjbG9ja051bWJlciwgZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycywgZmxvYXQgZ3Jvc3NQYXkpOwpmbG9hdCBjYWxjdWxhdGVPdmVydGltZShmbG9hdCBob3Vycyk7CmZsb2F0IGNhbGN1bGF0ZUdyb3NzUGF5KGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMpOwoKaW50IG1haW4oKSB7CiAgICAvKiBWYXJpYWJsZSBEZWNsYXJhdGlvbnMgKi8KICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyW1NJWkVdID0gezk4NDAxLCA1MjY0ODgsIDc2NTM0OSwgMzQ2NDUsIDEyNzYxNX07IC8vIEVtcGxveWVlIElEcwogICAgZmxvYXQgZ3Jvc3NQYXlbU0laRV07ICAgIC8vIEdyb3NzIHBheQogICAgZmxvYXQgaG91cnNbU0laRV07ICAgICAgIC8vIEhvdXJzIHdvcmtlZCBpbiBhIGdpdmVuIHdlZWsKICAgIGZsb2F0IG92ZXJ0aW1lSHJzW1NJWkVdOyAvLyBPdmVydGltZSBob3VycwogICAgZmxvYXQgd2FnZVJhdGVbU0laRV0gPSB7MTAuNjAsIDkuNzUsIDEwLjUwLCAxMi4yNSwgOC4zNX07IC8vIEhvdXJseSB3YWdlIHJhdGUKICAgIGludCBpOyAvLyBMb29wIHZhcmlhYmxlCgogICAgLy8gUHJvY2VzcyBlYWNoIGVtcGxveWVlCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKSB7CiAgICAgICAgLy8gUmVhZCBpbiBob3VycyBmb3IgZW1wbG95ZWUKICAgICAgICBob3Vyc1tpXSA9IGdldEhvdXJzKGNsb2NrTnVtYmVyW2ldKTsKICAgICAgICAKICAgICAgICAvLyBDYWxjdWxhdGUgb3ZlcnRpbWUgaG91cnMKICAgICAgICBvdmVydGltZUhyc1tpXSA9IGNhbGN1bGF0ZU92ZXJ0aW1lKGhvdXJzW2ldKTsKICAgICAgICAKICAgICAgICAvLyBDYWxjdWxhdGUgZ3Jvc3MgcGF5CiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBjYWxjdWxhdGVHcm9zc1BheSh3YWdlUmF0ZVtpXSwgaG91cnNbaV0sIG92ZXJ0aW1lSHJzW2ldKTsKICAgIH0KCiAgICAvLyBQcmludCB0aGUgaGVhZGVyIGluZm8KICAgIHByaW50SGVhZGVyKCk7CgogICAgLy8gUHJpbnQgb3V0IGVhY2ggZW1wbG95ZWUKICAgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpIHsKICAgICAgICBwcmludEVtcChjbG9ja051bWJlcltpXSwgd2FnZVJhdGVbaV0sIGhvdXJzW2ldLCBvdmVydGltZUhyc1tpXSwgZ3Jvc3NQYXlbaV0pOwogICAgfQoKICAgIHJldHVybiAwOwp9CgovLyBGdW5jdGlvbiB0byBvYnRhaW4gaG91cnMgd29ya2VkIGZyb20gdGhlIHVzZXIKZmxvYXQgZ2V0SG91cnMobG9uZyBpbnQgY2xvY2tOdW1iZXIpIHsKICAgIGZsb2F0IGhvdXJzV29ya2VkOwogICAgcHJpbnRmKCJcbkVudGVyIGhvdXJzIHdvcmtlZCBieSBlbXAgIyAlMDZsaTogIiwgY2xvY2tOdW1iZXIpOwogICAgc2NhbmYoIiVmIiwgJmhvdXJzV29ya2VkKTsKICAgIHJldHVybiBob3Vyc1dvcmtlZDsKfQoKLy8gRnVuY3Rpb24gdG8gY2FsY3VsYXRlIG92ZXJ0aW1lIGhvdXJzCmZsb2F0IGNhbGN1bGF0ZU92ZXJ0aW1lKGZsb2F0IGhvdXJzKSB7CiAgICByZXR1cm4gKGhvdXJzID4gU1REX1dPUktfV0VFSykgPyAoaG91cnMgLSBTVERfV09SS19XRUVLKSA6IDAuMGY7Cn0KCi8vIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBncm9zcyBwYXkKZmxvYXQgY2FsY3VsYXRlR3Jvc3NQYXkoZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycykgewogICAgZmxvYXQgcmVndWxhclBheSA9IChob3VycyAtIG92ZXJ0aW1lSHJzKSAqIHdhZ2VSYXRlOwogICAgZmxvYXQgb3ZlcnRpbWVQYXkgPSBvdmVydGltZUhycyAqIHdhZ2VSYXRlICogT1ZFUlRJTUVfUkFURTsKICAgIHJldHVybiByZWd1bGFyUGF5ICsgb3ZlcnRpbWVQYXk7Cn0KCi8vIEZ1bmN0aW9uIHRvIHByaW50IHRoZSB0YWJsZSBoZWFkZXIKdm9pZCBwcmludEhlYWRlcih2b2lkKSB7CiAgICBwcmludGYoIlxuXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG4iKTsKICAgIHByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgcHJpbnRmKCIgICBDbG9jayMgICBXYWdlICAgSG91cnMgICBPVCAgICAgR3Jvc3NcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwp9CgovLyBGdW5jdGlvbiB0byBwcmludCBlbXBsb3llZSBkZXRhaWxzCnZvaWQgcHJpbnRFbXAobG9uZyBpbnQgY2xvY2tOdW1iZXIsIGZsb2F0IHdhZ2VSYXRlLCBmbG9hdCBob3VycywgZmxvYXQgb3ZlcnRpbWVIcnMsIGZsb2F0IGdyb3NzUGF5KSB7CiAgICBwcmludGYoIiAlMDZsaSAgICU1LjJmICAgJTUuMWYgICAlNS4xZiAgICU3LjJmXG4iLCBjbG9ja051bWJlciwgd2FnZVJhdGUsIGhvdXJzLCBvdmVydGltZUhycywgZ3Jvc3NQYXkpOwp9Cgo=