A company hired N=10 workers who are paid hourly and you are given a data file t
ID: 3674766 • Letter: A
Question
A company hired N=10 workers who are paid hourly and you are given a data file that contains the last name of the employees, the number of hours each employee worked in a week, and the hourly pay rate of each employee. For instance, a sample data file may look like
smith 30 6.25
cooper 45 7.00
brown 40 8.00
hut 10 9.99
Write a C++ program to solve the problem
You are asked to write a program that computes each employee’s weekly pay and the average salary of all the workers. The program then outputs the weekly pay of each employee, the average weekly pay, and the names of all the employees whose pay is greater than or equal to the average pay. If the number of hours worked in a week is more than 40 hours, then the pay rate for the hours over 40 is 1.5 times the regular hourly rate.
Use two parallel arrays: a one- dimensional array to store the names of all the employees, and a two- dimensional array of 10 rows and 3 columns to store the number of hours an employee worked in a week, the hourly pay rate, and the weekly pay. Your program must contain at least the following functions:
a function to read the data from the file into the arrays -- call it readFromFiletoArrays()
a function to determine the weekly pay of all the employees -- call it calcWeeklyPay()
a function to output the names of all the employees whose pay is greater than or equal to the average weekly pay and also print the average salary -- call it printAboveAverageEmployees()
a function to output each employee’s data (including the name, number of hours worked, hourly rate, and salary)-- call it printAllEmployees().
Explanation / Answer
Please find the required program below :
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
using namespace std;
string names[10];
double emp[10][3];
double avg = 0;
void readFromFiletoArrays() {
ifstream input( "filename.ext" );
int i = 0;
for( string line; getline( input, line ); )
{
istringstream iss(line, istringstream::in);
for (int n=0; n<3; n++)
{
switch(n){
case 0 : {
string name;
iss >> name;
names[i] = name;
break;
}
case 1 : {
double val1;
iss >> val1;
emp[i][1] = val1;
break;
}
case 2 :
{
double val2;
iss >> val2;
emp[i][2] = val2;
break;
}
}
}
}
}
void calcWeeklyPay(){
double sum = 0;
for(int i=0; i < 10; i++) {
double rate = emp[i][2];
double hrs = emp[i][1];
if(emp[i][1] > 40) {
emp[i][3] = (rate * 40) + ((hrs-40) * 1.5 *rate);
} else {
emp[i][3] = rate * hrs;
}
sum = sum + emp[i][3];
}
avg = (sum/10);
}
void printAboveAverageEmployees(){
cout << "Employee names with weekpay above avg :" << endl;
for(int i=0; i < 10; i++) {
if(emp[i][3] > avg) {
cout << names[i] << endl;
}
}
}
void printAllEmployees(){
cout << "All Employees data :" << endl;
for(int i=0; i < 10; i++) {
cout << names[i] << ", " << emp[i][0] << ", " << emp[i][1] << ", " << emp[i][2] << endl;
}
}
int main()
{
readFromFiletoArrays();
calcWeeklyPay();
printAboveAverageEmployees();
printAllEmployees();
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.