Question & Answer: Write a C++ program that will need to read from a file of employee data for how many hours each employee worked for a w…..

Write a C++ program that will need to read from a file of employee data for how many hours each employee worked for a week. Then for each of the employees, a total of the hours worked is made and then the employees are sorted into descending order based on their total hours using bubble sort. Cannot use structures or vectors.

There needs be 3 function calls total in main that:

Open and read the file into the array and add the total hours worked for each employee

Sort the array based on the total hours

Write out the output

Input file looks like this:

Jones,Frank 2 3 8 3635 Smith, Tiny 883082 Turk, Tom 9104700 e Jackson,Jim 5 6 56 5 6 5 Catan,Doug 7 387257

Output should look something similar to this:

Jones,Frank 2 3 8 3635 Smith, Tiny 883082 Turk, Tom 9104700 e Jackson,Jim 5 6 56 5 6 5 Catan,Doug 7 387257

Expert Answer

 

#include <iostream>
#include <fstream>

using namespace std;

string* name;
int** hours;
int* totalHours;
int count;

void read(char *fileName) {
ifstream fin;
fin.open(fileName);
if (fin.is_open()) {
fin >> count;
name = new string[7];
hours = new int*[count];
for(int i = 0; i<count; i++)
hours[i] = new int[7];
totalHours = new int[count];
for (int i = 0; i < count; i++) {
fin >> name[i];
for (int j = 0; j < 7; j++)
fin >> hours[i][j];
}
fin.close();
}
else
cout << “Cannot open file” << endl;
}

void calcTotal() {
for (int i = 0; i < count; i++) {
totalHours[i] = 0;
for (int j = 0; j < 7; j++)
totalHours[i] += hours[i][j];
}
}

void sort() {

for(int i = 0; i < count – 1; i++) {
for (int j = 0; j < count – i – 1; j++)
if (totalHours[j] > totalHours[j+1]) {
string tmpName = name[j];
name[j] = name[j+1];
name[j+1] = tmpName;

int* tmpHours = hours[j];
hours[j] = hours[j+1];
hours[j+1] = tmpHours;

int tmpTotal = totalHours[j];
totalHours[j] = totalHours[j+1];
totalHours[j+1] = tmpTotal;
}
}

}

int main() {
char fileName[100];
cout << “Enter File name” ;
cin >> fileName;
read(fileName);
calcTotal();
sort();
cout << “name:tStMtTtWtTtFtSt TTL” << endl;
for (int i = 0; i < count; i++) {
cout << “inside array”;
cout << name[i] << “t”;
for (int j = 0; j < 7; j++)
cout << hours[i][j] << “t”;
cout << totalHours[i] << endl;

}
}

Still stressed from student homework?
Get quality assistance from academic writers!