//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: <replace with your name>
//
// Class: C Programming, <replace with Semester and Year>
//
// Date: <replace with the current date>
//
// Description: Program which determines overtime and
// gross pay for a set of employees with outputs sent
// to standard output (the screen).
//
//********************************************************
#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( )
{
// 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 grossPay[ SIZE] ;
float hours[ SIZE] ;
float normalPay[ SIZE] ;
float overtimeHrs[ SIZE] ;
float overtimePay[ SIZE] ;
int i;
printf ( "\n *** Pay Calculator ***\n \n " ) ;
/* Read hours for each employee and compute normal/overtime/gross pay */
for ( i = 0 ; i < SIZE; i++ )
{
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 input state (simple handling)
hours[ i] = 0.0f ;
}
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
{
overtimeHrs[ i] = 0.0f ;
normalPay[ i] = hours[ i] * wageRate[ i] ;
overtimePay[ i] = 0.0f ;
}
grossPay[ i] = normalPay[ i] + overtimePay[ i] ;
}
/* Print report header */
printf ( "\n -------------------------------------------------------------\n " ) ; printf ( " Clock# Wage Hours OT Gross\n " ) ; printf ( "-------------------------------------------------------------\n " ) ;
/* Print each employee's row */
for ( i = 0 ; i < SIZE; i++ )
{
/*
Formats:
- Clock#: zero-padded to 6 digits -> %06ld
- Wage: 2 decimal places -> %6.2f
- Hours / OT: 1 decimal place -> %6.1f
- Gross: 2 decimal places -> %8.2f
*/
printf ( " %06ld %6.2f %6.1f %6.1f %8.2f\n " , clockNumber[ i] ,
wageRate[ i] ,
hours[ i] ,
overtimeHrs[ i] ,
grossPay[ i] ) ;
}
return 0 ;
}
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIEFzc2lnbm1lbnQgNCAtIEFycmF5cwovLwovLyBOYW1lOiA8cmVwbGFjZSB3aXRoIHlvdXIgbmFtZT4KLy8KLy8gQ2xhc3M6IEMgUHJvZ3JhbW1pbmcsIDxyZXBsYWNlIHdpdGggU2VtZXN0ZXIgYW5kIFllYXI+Ci8vCi8vIERhdGU6IDxyZXBsYWNlIHdpdGggdGhlIGN1cnJlbnQgZGF0ZT4KLy8KLy8gRGVzY3JpcHRpb246IFByb2dyYW0gd2hpY2ggZGV0ZXJtaW5lcyBvdmVydGltZSBhbmQgCi8vIGdyb3NzIHBheSBmb3IgYSBzZXQgb2YgZW1wbG95ZWVzIHdpdGggb3V0cHV0cyBzZW50IAovLyB0byBzdGFuZGFyZCBvdXRwdXQgKHRoZSBzY3JlZW4pLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIGNvbnN0YW50cyB0byB1c2UKI2RlZmluZSBTSVpFIDUgICAgICAgICAgIC8vIG51bWJlciBvZiBlbXBsb3llZXMgdG8gcHJvY2VzcwojZGVmaW5lIFNURF9IT1VSUyA0MC4wICAgLy8gbm9ybWFsIHdvcmsgd2VlayBob3VycyBiZWZvcmUgb3ZlcnRpbWUKI2RlZmluZSBPVF9SQVRFIDEuNSAgICAgIC8vIHRpbWUgYW5kIGhhbGYgb3ZlcnRpbWUgc2V0dGluZwoKaW50IG1haW4oKQp7CiAgICAvLyB1bmlxdWUgZW1wbG95ZWUgaWRlbnRpZmllciAoaW5pdGlhbGl6ZWQpCiAgICBsb25nIGludCBjbG9ja051bWJlcltTSVpFXSA9IHs5ODQwMSwgNTI2NDg4LCA3NjUzNDksIDM0NjQ1LCAxMjc2MTV9OwoKICAgIC8vIGhvdXJseSBwYXkgZm9yIGVhY2ggZW1wbG95ZWUgKGluaXRpYWxpemVkKQogICAgZmxvYXQgd2FnZVJhdGVbU0laRV0gPSB7MTAuNmYsIDkuNzVmLCAxMC41ZiwgMTIuMjVmLCA4LjM1Zn07CgogICAgLy8gYXJyYXlzIHRvIGJlIGZpbGxlZC9jYWxjdWxhdGVkCiAgICBmbG9hdCBncm9zc1BheVtTSVpFXTsKICAgIGZsb2F0IGhvdXJzW1NJWkVdOwogICAgZmxvYXQgbm9ybWFsUGF5W1NJWkVdOwogICAgZmxvYXQgb3ZlcnRpbWVIcnNbU0laRV07CiAgICBmbG9hdCBvdmVydGltZVBheVtTSVpFXTsKCiAgICBpbnQgaTsKCiAgICBwcmludGYoIlxuKioqIFBheSBDYWxjdWxhdG9yICoqKlxuXG4iKTsKCiAgICAvKiBSZWFkIGhvdXJzIGZvciBlYWNoIGVtcGxveWVlIGFuZCBjb21wdXRlIG5vcm1hbC9vdmVydGltZS9ncm9zcyBwYXkgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCJFbnRlciBudW1iZXIgb2YgaG91cnMgd29ya2VkIGZvciBlbXBsb3llZSAlMDZsZDogIiwgY2xvY2tOdW1iZXJbaV0pOwogICAgICAgIGlmIChzY2FuZigiJWYiLCAmaG91cnNbaV0pICE9IDEpIHsKICAgICAgICAgICAgLy8gSWYgaW5wdXQgZmFpbHMsIHNldCBob3VycyB0byAwIGFuZCBjbGVhciBpbnB1dCBzdGF0ZSAoc2ltcGxlIGhhbmRsaW5nKQogICAgICAgICAgICBob3Vyc1tpXSA9IDAuMGY7CiAgICAgICAgfQoKICAgICAgICBpZiAoaG91cnNbaV0gPj0gU1REX0hPVVJTKQogICAgICAgIHsKICAgICAgICAgICAgb3ZlcnRpbWVIcnNbaV0gPSBob3Vyc1tpXSAtIFNURF9IT1VSUzsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gU1REX0hPVVJTICogd2FnZVJhdGVbaV07CiAgICAgICAgICAgIG92ZXJ0aW1lUGF5W2ldID0gb3ZlcnRpbWVIcnNbaV0gKiB3YWdlUmF0ZVtpXSAqIE9UX1JBVEU7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldID0gMC4wZjsKICAgICAgICAgICAgbm9ybWFsUGF5W2ldID0gaG91cnNbaV0gKiB3YWdlUmF0ZVtpXTsKICAgICAgICAgICAgb3ZlcnRpbWVQYXlbaV0gPSAwLjBmOwogICAgICAgIH0KCiAgICAgICAgZ3Jvc3NQYXlbaV0gPSBub3JtYWxQYXlbaV0gKyBvdmVydGltZVBheVtpXTsKICAgIH0KCiAgICAvKiBQcmludCByZXBvcnQgaGVhZGVyICovCiAgICBwcmludGYoIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICBwcmludGYoIiAgICBDbG9jayMgICBXYWdlICAgSG91cnMgICAgT1QgICAgICAgR3Jvc3NcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCiAgICAvKiBQcmludCBlYWNoIGVtcGxveWVlJ3Mgcm93ICovCiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQogICAgewogICAgICAgIC8qIAogICAgICAgICAgIEZvcm1hdHM6CiAgICAgICAgICAgLSBDbG9jayM6IHplcm8tcGFkZGVkIHRvIDYgZGlnaXRzIC0+ICUwNmxkCiAgICAgICAgICAgLSBXYWdlOiAyIGRlY2ltYWwgcGxhY2VzIC0+ICU2LjJmCiAgICAgICAgICAgLSBIb3VycyAvIE9UOiAxIGRlY2ltYWwgcGxhY2UgLT4gJTYuMWYKICAgICAgICAgICAtIEdyb3NzOiAyIGRlY2ltYWwgcGxhY2VzIC0+ICU4LjJmCiAgICAgICAgKi8KICAgICAgICBwcmludGYoIiAgICAlMDZsZCAgJTYuMmYgICAlNi4xZiAgICU2LjFmICAgJTguMmZcbiIsCiAgICAgICAgICAgICAgIGNsb2NrTnVtYmVyW2ldLAogICAgICAgICAgICAgICB3YWdlUmF0ZVtpXSwKICAgICAgICAgICAgICAgaG91cnNbaV0sCiAgICAgICAgICAgICAgIG92ZXJ0aW1lSHJzW2ldLAogICAgICAgICAgICAgICBncm9zc1BheVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=