//********************************************************
//
// Assignment 5 - Functions
//
// Name: <Isaac Boahndao>
//
// Class: C Programming, <Spring Semester and 2025>
//
// Date: <03_02_25>
//
// Description: Program which determines overtime and
// gross pay for a set of employees with outputs sent
// to standard output (the screen).
//
// All functions are called by value
//
//********************************************************
#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;
}
Ci8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gQXNzaWdubWVudCA1IC0gRnVuY3Rpb25zCi8vCi8vIE5hbWU6IDxJc2FhYyBCb2FobmRhbz4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIDxTcHJpbmcgU2VtZXN0ZXIgYW5kIDIwMjU+Ci8vCi8vIERhdGU6IDwwM18wMl8yNT4KLy8KLy8gRGVzY3JpcHRpb246IFByb2dyYW0gd2hpY2ggZGV0ZXJtaW5lcyBvdmVydGltZSBhbmQgCi8vIGdyb3NzIHBheSBmb3IgYSBzZXQgb2YgZW1wbG95ZWVzIHdpdGggb3V0cHV0cyBzZW50IAovLyB0byBzdGFuZGFyZCBvdXRwdXQgKHRoZSBzY3JlZW4pLgovLwovLyBBbGwgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgdmFsdWUKLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIENvbnN0YW50cwojZGVmaW5lIFNJWkUgNQojZGVmaW5lIE9WRVJUSU1FX1JBVEUgMS41ZgojZGVmaW5lIFNURF9XT1JLX1dFRUsgNDAuMGYKCi8vIEZ1bmN0aW9uIHByb3RvdHlwZXMKZmxvYXQgZ2V0SG91cnMobG9uZyBpbnQgY2xvY2tOdW1iZXIpOwp2b2lkIHByaW50SGVhZGVyKHZvaWQpOwp2b2lkIHByaW50RW1wKGxvbmcgaW50IGNsb2NrTnVtYmVyLCBmbG9hdCB3YWdlUmF0ZSwgZmxvYXQgaG91cnMsIAogICAgICAgICAgICAgIGZsb2F0IG92ZXJ0aW1lSHJzLCBmbG9hdCBncm9zc1BheSk7CmZsb2F0IGNhbGN1bGF0ZU92ZXJ0aW1lKGZsb2F0IGhvdXJzKTsKZmxvYXQgY2FsY3VsYXRlR3Jvc3NQYXkoZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycyk7CgppbnQgbWFpbigpIHsKICAgIC8vIFZhcmlhYmxlIERlY2xhcmF0aW9ucwogICAgbG9uZyBpbnQgY2xvY2tOdW1iZXJbU0laRV0gPSB7OTg0MDEsIDUyNjQ4OCwgNzY1MzQ5LCAzNDY0NSwgMTI3NjE1fTsgLy8gSUQKICAgIGZsb2F0IGdyb3NzUGF5W1NJWkVdOyAgIC8vIEdyb3NzIHBheQogICAgZmxvYXQgaG91cnNbU0laRV07ICAgICAgLy8gSG91cnMgd29ya2VkIGluIGEgZ2l2ZW4gd2VlawogICAgZmxvYXQgb3ZlcnRpbWVIcnNbU0laRV07IC8vIE92ZXJ0aW1lIGhvdXJzCiAgICBmbG9hdCB3YWdlUmF0ZVtTSVpFXSA9IHsxMC42MCwgOS43NSwgMTAuNTAsIDEyLjI1LCA4LjM1fTsgLy8gSG91cmx5IHdhZ2UgcmF0ZQogICAgaW50IGk7ICAvLyBMb29wIGluZGV4CgogICAgLy8gUHJvY2VzcyBlYWNoIGVtcGxveWVlCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKSB7CiAgICAgICAgaG91cnNbaV0gPSBnZXRIb3VycyhjbG9ja051bWJlcltpXSk7CiAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSBjYWxjdWxhdGVPdmVydGltZShob3Vyc1tpXSk7CiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBjYWxjdWxhdGVHcm9zc1BheSh3YWdlUmF0ZVtpXSwgaG91cnNbaV0sIG92ZXJ0aW1lSHJzW2ldKTsKICAgIH0KCiAgICAvLyBQcmludCB0aGUgaGVhZGVyIGluZm8KICAgIHByaW50SGVhZGVyKCk7CgogICAgLy8gUHJpbnQgb3V0IGVhY2ggZW1wbG95ZWUncyBkZXRhaWxzCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKSB7CiAgICAgICAgcHJpbnRFbXAoY2xvY2tOdW1iZXJbaV0sIHdhZ2VSYXRlW2ldLCBob3Vyc1tpXSwgb3ZlcnRpbWVIcnNbaV0sIGdyb3NzUGF5W2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8gRnVuY3Rpb24gdG8gZ2V0IGhvdXJzIHdvcmtlZCBmcm9tIHVzZXIKZmxvYXQgZ2V0SG91cnMobG9uZyBpbnQgY2xvY2tOdW1iZXIpIHsKICAgIGZsb2F0IGhvdXJzV29ya2VkOwogICAgcHJpbnRmKCJcbkVudGVyIGhvdXJzIHdvcmtlZCBieSBlbXAgIyAlMDZsaTogIiwgY2xvY2tOdW1iZXIpOwogICAgc2NhbmYoIiVmIiwgJmhvdXJzV29ya2VkKTsKICAgIHJldHVybiBob3Vyc1dvcmtlZDsKfQoKLy8gRnVuY3Rpb24gdG8gcHJpbnQgdGhlIHRhYmxlIGhlYWRlcgp2b2lkIHByaW50SGVhZGVyKHZvaWQpIHsKICAgIHByaW50ZigiXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG5cbiIpOwogICAgcHJpbnRmKCJDbG9jayMgICBXYWdlICBIb3VycyAgT1QgICAgIEdyb3NzXG4iKTsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKfQoKLy8gRnVuY3Rpb24gdG8gcHJpbnQgZW1wbG95ZWUgZGV0YWlscwp2b2lkIHByaW50RW1wKGxvbmcgaW50IGNsb2NrTnVtYmVyLCBmbG9hdCB3YWdlUmF0ZSwgZmxvYXQgaG91cnMsIAogICAgICAgICAgICAgIGZsb2F0IG92ZXJ0aW1lSHJzLCBmbG9hdCBncm9zc1BheSkgewogICAgcHJpbnRmKCIlMDZsaSAgJS4yZiAgJS4yZiAgJS4yZiAgJS4yZlxuIiwgCiAgICAgICAgICAgY2xvY2tOdW1iZXIsIHdhZ2VSYXRlLCBob3Vycywgb3ZlcnRpbWVIcnMsIGdyb3NzUGF5KTsKfQoKLy8gRnVuY3Rpb24gdG8gY2FsY3VsYXRlIG92ZXJ0aW1lIGhvdXJzCmZsb2F0IGNhbGN1bGF0ZU92ZXJ0aW1lKGZsb2F0IGhvdXJzKSB7CiAgICByZXR1cm4gKGhvdXJzID4gU1REX1dPUktfV0VFSykgPyAoaG91cnMgLSBTVERfV09SS19XRUVLKSA6IDAuMGY7Cn0KCi8vIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBncm9zcyBwYXkKZmxvYXQgY2FsY3VsYXRlR3Jvc3NQYXkoZmxvYXQgd2FnZVJhdGUsIGZsb2F0IGhvdXJzLCBmbG9hdCBvdmVydGltZUhycykgewogICAgZmxvYXQgcmVndWxhclBheSA9IHdhZ2VSYXRlICogKGhvdXJzIC0gb3ZlcnRpbWVIcnMpOwogICAgZmxvYXQgb3ZlcnRpbWVQYXkgPSBvdmVydGltZUhycyAqICh3YWdlUmF0ZSAqIE9WRVJUSU1FX1JBVEUpOwogICAgcmV0dXJuIHJlZ3VsYXJQYXkgKyBvdmVydGltZVBheTsKfQ==