Question: I am trying to figure out how to use structures in this code. Write a C program that will calculate the gross pay of a
I am trying to figure out how to use structures in this code.
Write a C program that will calculate the gross pay of a set of employees. Continue to use all the features from your past assignments. In particular, expand upon your previous assignment and continue to use multiple functions and constants to help with various tasks called upon by your program.
The program should prompt the user to enter the number of hours each employee worked. When prompted, key in the hours shown below.
The program determines the overtime hours (anything over 40 hours), the gross pay, and then outputs a table in the following format. Column alignment, leading zeros in Clock#, and zero suppression in float fields is important. Use 1.5 as the overtime pay factor.
-------------------------------------------------------------------------- Clock# Wage Hours OT Gross -------------------------------------------------------------------------- 098401 10.60 51.0 11.0 598.90 526488 9.75 42.5 2.5 426.56 765349 10.50 37.0 0.0 388.50 034645 12.25 45.0 5.0 581.88 127615 8.35 0.0 0.0 0.00
You should implement this program using the following structure to store the information for each employee.
/* This is the structure you will need, feel free to modify as needed */ struct employee { long int clockNumber; float wageRate; float hours; float overtimeHrs; float grossPay; };
In your main function, define an array of structures, and feel free to initialize the clock and wage values in your array declaration. You must prompt for each employee's hours and calculate their corresponding overtime and gross pay. Use the following information to initialize your data.
#include
/* Define Constants */
#define NUM_EMPL 5
#define STD_HOURS 40.0
#define OT_RATE 1.5
/* Define a global structure to pass employee data between functions */
/* Note that the structure type is global, but you don't want a variable */
/* of that type to be global. Best to declare a variable of that type */
/* in a function like main or another function and pass as needed. */
struct employee
{
long int clockNumber;
float wageRate;
float hours;
float overtimeHrs;
float grossPay;
};
/* define prototypes here for each function except main */
float getHours (long int clockNumber);
void printHeader (void);
void printEmp (long int clockNumber, float wageRate, float hours,
float overtimeHrs, float grossPay);
/* TODO: Add your other function prototypes here */
int main ()
{
/* Set up a local variable to store the employee information */
struct employee employeeData[NUM_EMPL] = {
{ 98401, 10.60 },
{ 526488, 9.75 },
{ 765349, 10.50 }, /* initialize clock and wage values */
{ 34645, 12.25 },
{ 127615, 8.35 }
};
int i; /* loop and array index */
/* Call functions as needed to read and calculate information */
for (i = 0; i < NUM_EMPL; ++i)
{
/* Prompt for the number of hours worked by the employee */
employeeData[i].hours = getHours (employeeData[i].clockNumber);
/* TODO: Add other function calls as needed to calculate overtime and gross */
} /* for */
/* Print the column headers */
printHeader();
/* print out each employee */
for (i = 0; i < NUM_EMPL; ++i)
{
printEmp (employeeData[i].clockNumber,
employeeData[i].wageRate,
employeeData[i].hours,
employeeData[i].overtimeHrs,
employeeData[i].grossPay);
}
return(0); /* success */
} /* main */
//**************************************************************
// Function: getHours
//
// Purpose: Obtains input from user, the number of hours worked
// per employee and stores the result in a local variable
// that is passed back to the calling function.
//
// Parameters: clockNumber - The unique employee ID
//
// Returns: hoursWorked - hours worked in a given week
//
//**************************************************************
float getHours (long int clockNumber)
{
float hoursWorked; /* hours worked in a given week */
/* Read in hours for employee */
printf(" Enter hours worked by emp # %06li: ", clockNumber);
scanf ("%f", &hoursWorked);
/* return hours back to the calling function */
return (hoursWorked);
}
//**************************************************************
// Function: printHeader
//
// Purpose: Prints the initial table header information.
//
// Parameters: none
//
// Returns: void
//
//**************************************************************
void printHeader (void)
{
printf (" *** Pay Calculator *** ");
/* print the table header */
printf(" Clock# Wage Hours OT Gross ");
printf("------------------------------------------------ ");
}
//*************************************************************
// Function: printEmp
//
// Purpose: Prints out all the information for an employee
// in a nice and orderly table format.
//
// Parameters:
//
// clockNumber - unique employee ID
// wageRate - hourly wage rate
// hours - Hours worked for the week
// overtimeHrs - overtime hours worked in a week
// grossPay - gross pay for the week
//
// Returns: void
//
//**************************************************************
void printEmp (long int clockNumber, float wageRate, float hours,
float overtimeHrs, float grossPay)
{
/* Print out a single employee */
printf(" %06li %5.2f %4.1f %4.1f %8.2f",
clockNumber, wageRate, hours,
overtimeHrs, grossPay);
}
/* TODO: Add your functions here */
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
