//
// Pay Calculator using arrays
// Calculates overtime hours and gross pay for SIZE employees
//
#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( void )
{
// unique employee identifier (initialized)
long int clockNumber[ SIZE] = { 98401 , 526488 , 765349 , 34645 , 127615 } ;
// hourly pay for each employee (initialized)
float wageRate[ SIZE] = { 10.6f , 9.75f , 10.5f , 12.25f , 8.35f } ;
// arrays to be filled / calculated
float hours[ SIZE] ; // hours worked in a given week (read from input)
float normalPay[ SIZE] ; // normal weekly pay without overtime
float overtimeHrs[ SIZE] ; // overtime hours worked in a given week
float overtimePay[ SIZE] ; // overtime pay for a given week
float grossPay[ SIZE] ; // weekly gross pay - normal pay + overtime pay
int i;
printf ( "\n *** Pay Calculator ***\n \n " ) ;
// Read hours for each employee and compute pay
for ( i = 0 ; i < SIZE; i++ )
{
// Prompt and read hours worked for employee
printf ( "Enter number of hours worked for employee %06ld: " , clockNumber
[ i
] ) ; if ( scanf ( "%f" , & hours
[ i
] ) != 1 ) { // If input fails, set hours to 0 and clear stdin
hours[ i] = 0.0f ;
}
// 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.0f ;
normalPay[ i] = hours[ i] * wageRate[ i] ;
overtimePay[ i] = 0.0f ;
}
// Calculate Gross Pay
grossPay[ i] = normalPay[ i] + overtimePay[ i] ;
}
// Print a nice table header
printf ( "\n --------------------------------------------------------------------------\n " ) ; printf ( " Clock# Wage Hours OT Gross\n " ) ; printf ( "--------------------------------------------------------------------------\n " ) ;
// Print employee information from arrays
for ( i = 0 ; i < SIZE; i++ )
{
// Clock# printed with leading zeros to match sample (6 digits)
// Wage printed with 2 decimals, Hours with 1 decimal, OT with 1 decimal, Gross with 2 decimals
printf ( " %06ld %6.2f %6.1f %6.1f %8.2f\n " , clockNumber[ i] ,
wageRate[ i] ,
hours[ i] ,
overtimeHrs[ i] ,
grossPay[ i] ) ;
}
return 0 ;
}
Ly8KLy8gUGF5IENhbGN1bGF0b3IgdXNpbmcgYXJyYXlzCi8vIENhbGN1bGF0ZXMgb3ZlcnRpbWUgaG91cnMgYW5kIGdyb3NzIHBheSBmb3IgU0laRSBlbXBsb3llZXMKLy8KI2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBjb25zdGFudHMgdG8gdXNlCiNkZWZpbmUgU0laRSA1ICAgICAgICAgICAvLyBudW1iZXIgb2YgZW1wbG95ZWVzIHRvIHByb2Nlc3MKI2RlZmluZSBTVERfSE9VUlMgNDAuMCAgIC8vIG5vcm1hbCB3b3JrIHdlZWsgaG91cnMgYmVmb3JlIG92ZXJ0aW1lCiNkZWZpbmUgT1RfUkFURSAxLjUgICAgICAvLyB0aW1lIGFuZCBoYWxmIG92ZXJ0aW1lIHNldHRpbmcKCmludCBtYWluKHZvaWQpCnsKICAgIC8vIHVuaXF1ZSBlbXBsb3llZSBpZGVudGlmaWVyIChpbml0aWFsaXplZCkKICAgIGxvbmcgaW50IGNsb2NrTnVtYmVyW1NJWkVdID0gezk4NDAxLCA1MjY0ODgsIDc2NTM0OSwgMzQ2NDUsIDEyNzYxNX07CgogICAgLy8gaG91cmx5IHBheSBmb3IgZWFjaCBlbXBsb3llZSAoaW5pdGlhbGl6ZWQpCiAgICBmbG9hdCB3YWdlUmF0ZVtTSVpFXSA9IHsxMC42ZiwgOS43NWYsIDEwLjVmLCAxMi4yNWYsIDguMzVmfTsKCiAgICAvLyBhcnJheXMgdG8gYmUgZmlsbGVkIC8gY2FsY3VsYXRlZAogICAgZmxvYXQgaG91cnNbU0laRV07ICAgICAgICAvLyBob3VycyB3b3JrZWQgaW4gYSBnaXZlbiB3ZWVrIChyZWFkIGZyb20gaW5wdXQpCiAgICBmbG9hdCBub3JtYWxQYXlbU0laRV07ICAgIC8vIG5vcm1hbCB3ZWVrbHkgcGF5IHdpdGhvdXQgb3ZlcnRpbWUKICAgIGZsb2F0IG92ZXJ0aW1lSHJzW1NJWkVdOyAgLy8gb3ZlcnRpbWUgaG91cnMgd29ya2VkIGluIGEgZ2l2ZW4gd2VlawogICAgZmxvYXQgb3ZlcnRpbWVQYXlbU0laRV07ICAvLyBvdmVydGltZSBwYXkgZm9yIGEgZ2l2ZW4gd2VlawogICAgZmxvYXQgZ3Jvc3NQYXlbU0laRV07ICAgICAvLyB3ZWVrbHkgZ3Jvc3MgcGF5IC0gbm9ybWFsIHBheSArIG92ZXJ0aW1lIHBheQoKICAgIGludCBpOwoKICAgIHByaW50ZigiXG4qKiogUGF5IENhbGN1bGF0b3IgKioqXG5cbiIpOwoKICAgIC8vIFJlYWQgaG91cnMgZm9yIGVhY2ggZW1wbG95ZWUgYW5kIGNvbXB1dGUgcGF5CiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQogICAgewogICAgICAgIC8vIFByb21wdCBhbmQgcmVhZCBob3VycyB3b3JrZWQgZm9yIGVtcGxveWVlCiAgICAgICAgcHJpbnRmKCJFbnRlciBudW1iZXIgb2YgaG91cnMgd29ya2VkIGZvciBlbXBsb3llZSAlMDZsZDogIiwgY2xvY2tOdW1iZXJbaV0pOwogICAgICAgIGlmIChzY2FuZigiJWYiLCAmaG91cnNbaV0pICE9IDEpIHsKICAgICAgICAgICAgLy8gSWYgaW5wdXQgZmFpbHMsIHNldCBob3VycyB0byAwIGFuZCBjbGVhciBzdGRpbgogICAgICAgICAgICBob3Vyc1tpXSA9IDAuMGY7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxjdWxhdGUgb3ZlcnRpbWUgYW5kIGdyb3NzIHBheSBmb3IgZW1wbG95ZWUKICAgICAgICBpZiAoaG91cnNbaV0gPj0gU1REX0hPVVJTKQogICAgICAgIHsKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSBob3Vyc1tpXSAtIFNURF9IT1VSUzsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gU1REX0hPVVJTICogd2FnZVJhdGVbaV07CiAgICAgICAgICAgIG92ZXJ0aW1lUGF5W2ldID0gb3ZlcnRpbWVIcnNbaV0gKiB3YWdlUmF0ZVtpXSAqIE9UX1JBVEU7CiAgICAgICAgfQogICAgICAgIGVsc2UgLy8gbm8gT1QKICAgICAgICB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gMC4wZjsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gaG91cnNbaV0gKiB3YWdlUmF0ZVtpXTsKICAgICAgICAgICAgb3ZlcnRpbWVQYXlbaV0gPSAwLjBmOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsY3VsYXRlIEdyb3NzIFBheQogICAgICAgIGdyb3NzUGF5W2ldID0gbm9ybWFsUGF5W2ldICsgb3ZlcnRpbWVQYXlbaV07CiAgICB9CgogICAgLy8gUHJpbnQgYSBuaWNlIHRhYmxlIGhlYWRlcgogICAgcHJpbnRmKCJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgIHByaW50ZigiICAgIENsb2NrIyAgICAgV2FnZSAgICBIb3VycyAgICBPVCAgICAgIEdyb3NzXG4iKTsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIC8vIFByaW50IGVtcGxveWVlIGluZm9ybWF0aW9uIGZyb20gYXJyYXlzCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQogICAgewogICAgICAgIC8vIENsb2NrIyBwcmludGVkIHdpdGggbGVhZGluZyB6ZXJvcyB0byBtYXRjaCBzYW1wbGUgKDYgZGlnaXRzKQogICAgICAgIC8vIFdhZ2UgcHJpbnRlZCB3aXRoIDIgZGVjaW1hbHMsIEhvdXJzIHdpdGggMSBkZWNpbWFsLCBPVCB3aXRoIDEgZGVjaW1hbCwgR3Jvc3Mgd2l0aCAyIGRlY2ltYWxzCiAgICAgICAgcHJpbnRmKCIgICAgJTA2bGQgICAgJTYuMmYgICAlNi4xZiAgICU2LjFmICAgJTguMmZcbiIsCiAgICAgICAgICAgICAgIGNsb2NrTnVtYmVyW2ldLAogICAgICAgICAgICAgICB3YWdlUmF0ZVtpXSwKICAgICAgICAgICAgICAgaG91cnNbaV0sCiAgICAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldLAogICAgICAgICAgICAgICBncm9zc1BheVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K