Write a C++ program that will need to read from a file of employee data for how
ID: 2246333 • Letter: W
Question
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. Also needs to use structures and vectors.
There needs to be 3 function calls in main that:
-Open and read the file into the vectors and add the total hours worked for each employee
-Sort the vector based on the total hours
-Write out the output
(the functions have to be defined after main and need function prototypes before main)
What the structure has to look like:
What the input looks like:
Output should look something similar to this:
struct Employee string name vectorExplanation / 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: S M T W T F S TTL" << endl;
for (int i = 0; i < count; i++) {
cout << "inside array";
cout << name[i] << " ";
for (int j = 0; j < 7; j++)
cout << hours[i][j] << " ";
cout << totalHours[i] << endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.