//*******************************************************
//
// Assignment 4 - Arrays
//
// Name: Amanda Connors
//
// Class: C Programming, Fall 2026
//
// Date: October 4, 2026
//
// 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()
{
// Declare variables needed for the program
// Recommend an array for clock, wage, hours,
// ... and overtime hours and gross.
// Recommend arrays also for normal pay and overtime pay
// It is OK to pre-fill clock and wage values ... or you can prompt for them
// unique employee identifier
long int clockNumber[SIZE] = { 98401, 526488, 765349, 34645, 127615 };
float grossPay[SIZE]; // weekly gross pay - normal pay + overtime pay
float hours[SIZE]; // hours worked in a given week
int i; // loop and array index
float normalPay[SIZE]; // normal weekly pay without any overtime
float overtimeHrs[SIZE]; // overtime hours worked in a given week
float overtimePay[SIZE]; // overtime pay for a given week
float totalWage = 0; // sum of wageRate array calculated later
float totalHrs = 0; // sum of hours array calculated later
float totalOtHrs = 0; // sum of overtimeHrs array calculated later
float totalOtPay = 0; // sum of overtimePay array calculated later
float totalNormPay = 0; // sum of normalPay array calculated later
float totalGross = 0; // sum of grossPay array calculated later
// hourly pay for each employee
float wageRate[SIZE] = { 10.6, 9.75, 10.5, 12.25, 8.35 };
printf("\n*** Pay Calculator ***\n\n");
// Process each employee one at a time
for (i = 0; i < SIZE; i++)
{
// TODO - Prompt and Read in hours worked for employee
printf("\n Please enter the number of hours for employee %06li : ", clockNumber
[i
]);
// Calculate overtime and gross pay for employee
if (hours[i] >= STD_HOURS)
{
overtimeHrs[i] = hours[i] - STD_HOURS;
// TODO: Calculate arrays normalPay and overtimePay with overtime
overtimePay[i] = overtimeHrs[i] * (wageRate[i] * OT_RATE);
normalPay[i] = STD_HOURS * wageRate[i];
} //end if
else // no OT
{
overtimeHrs[i] = 0;
// TODO: Calculate arrays normalPay and overtimePay without overtime
overtimePay[i] = 0;
normalPay[i] = hours[i] * wageRate[i];
} // end else
// Calculate Gross Pay
grossPay[i] = normalPay[i] + overtimePay[i];
} // end for
// TODO: Print a nice table header
printf("\n\n------------------------------------------------------------------\n"); printf(" Clock#\t Wage\t Hours\t OT \tStandard Pay\tOT Pay\t Gross"); printf("\n------------------------------------------------------------------\n"); // Now that we have all the information in our arrays, we can
// Access each employee and print to screen or file
for (i = 0; i < SIZE; i++)
{
// TODO: Print employee information from your arrays
printf(" %06li\t %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n", clockNumber[i], wageRate[i], hours[i], overtimeHrs[i], normalPay[i], overtimePay[i], grossPay[i]);
} //end for
// calculate the sum total of arrays
for (i = 0; i < SIZE; i++)
{
totalWage += wageRate[i];
totalHrs += hours[i];
totalOtHrs += overtimeHrs[i];
totalOtPay += overtimePay[i];
totalNormPay += normalPay[i];
totalGross += grossPay[i];
} //end for
// calculate averages
float payAvg = totalWage / SIZE;
float hoursAvg = totalHrs / SIZE;
float otHrsAvg = totalOtHrs / SIZE;
float normPayAvg = totalNormPay / SIZE;
float otPayAvg = totalOtPay / SIZE;
float grossAvg = totalGross / SIZE;
// print the totals and averages
printf(" ------\t -----\t ----- \t-------\t --------\t -------\t --------\n");
printf(" Total\t %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n", totalWage, totalHrs, totalOtHrs, totalNormPay, totalOtPay, totalGross);
printf(" Average %5.2f\t %5.1f\t %5.1f\t %8.2f\t %8.2f\t %8.2f\n", payAvg, hoursAvg, otHrsAvg, normPayAvg, otPayAvg, grossAvg);
return(0);
}