Before and After Sorting Net Pay

I'm working on a program for payroll that will calculate and display a list of payroll variables (including net pay) then run again sorting the net pay. So the program should run once display all the variables with the net pay not sorted then run a second time with the net pay sorted.

I've written a program. It is working. But it only runs once and it and it only displays the results with the net pay after it's sorted.

Can anyone explain/show me what I need to do in order to get it to run a first time without sorting the net pays before it runs the second time sorting the net pays.
______________________________________________________________________________
My input file reads:
1645 John Doe 40 25.00
8932 Jane Smith 40 20.00
7104 Chris Davis 40 12.50
2816 Sara White 40 26.00
5387 Alice Baker 40 21.00
6780 Laura Jackson 40 13.50
5641 Jack Benson 40 11.25

9000 Kate Russle 60 25.00
9001 Matt Jones 50 20.00
9002 Fred Shultz 55 23.00
______________________________________________________________________________
My Output for Net Pay Post Sorting reads:
405.00
450.00
486.00
720.00
756.00
832.00
880.00
900.00
1150.00
1400.00
______________________________________________________________________________
My Output for Net Pay Pre Sorting should read:
900.00
720.00
450.00
832.00
756.00
486.00
405.00
1400.00
880.00
1150.00
______________________________________________________________________________
My Program Reads:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <iostream>
#include <iomanip>
#include<fstream>
#include <string>
using namespace std;

//function prototypes
int readalldata(long int id[], string fname[], string lname[], int hoursworked[], float hourlyrate[], int n);
void findovertimehours(int[], int[], int);
void findovertimepay(int[], float[], float[], int);
void findregularhours(int[], int[], int);
void findregularpay(int[], float[], float[], int);
void findgrosspay(float[], float[], float[], int);
void findtaxrate(float[], float[], int);
void findtaxamount(float[], float[], float[], int);
void findnetpay(float[], float[], float[], int);
void printalldata(long int id[], string fname[], string lname[], int hoursworked[], float hourlyrate[],
	float overtimepay[], float grosspay[], float taxamount[],
	float netpay[], int n);
void sort(float[], int);

int main(){
	const int MAXSIZE = 100;   //for maximum of 100 employees

	//decleration of variables
	int n;
	long int id[MAXSIZE];
	int hoursworked[MAXSIZE], overtimehours[MAXSIZE];
	int regularhours[MAXSIZE];
	float hourlyrate[MAXSIZE], regularpay[MAXSIZE],
		overtimepay[MAXSIZE], grosspay[MAXSIZE];
	float taxrate[MAXSIZE], taxamount[MAXSIZE], netpay[MAXSIZE];
	string fname[MAXSIZE], lname[MAXSIZE];

	//function calls
	n = readalldata(id, fname, lname, hoursworked, hourlyrate, MAXSIZE); //get all data 
	findovertimehours(hoursworked, overtimehours, n);
	findovertimepay(overtimehours, hourlyrate, overtimepay, n);
	findregularhours(hoursworked, regularhours, n);
	findregularpay(regularhours, regularpay, hourlyrate, n);
	findgrosspay(regularpay, overtimepay, grosspay, n);
	findtaxrate(grosspay, taxrate, n);
	findtaxamount(grosspay, taxamount, taxrate, n);
	findnetpay(grosspay, netpay, taxamount, n);
	sort(netpay, n);
	printalldata(id, fname, lname, hoursworked, hourlyrate, overtimepay,
		grosspay, taxamount, netpay, n);
	return 0;
}//MAIN
//fUNCTION DEFINITIONS
int readalldata(long int id[], string fname[], string lname[], int hoursworked[], float hourlyrate[], int n){
	ifstream fin("employee.txt");
	n = 0;

	while (fin >> id[n] >> fname[n] >> lname[n] >> hoursworked[n] >> hourlyrate[n])
		n++;

	fin.close();
	return n;
}//READALLDATA

void findovertimehours(int hoursworked[], int overtimehours[], int n){
	for (int i = 0; i<n; i++){
		if (hoursworked[i]>40) overtimehours[i] = hoursworked[i] - 40;
		else overtimehours[i] = 0;
	}//FOR
}//FINDOVERTIMEHOURS

void findovertimepay(int overtimehours[], float hourlyrate[],
	float overtimepay[], int n){
	for (int i = 0; i<n; i++){
		overtimepay[i] = overtimehours[i] * hourlyrate[i] * 1.5;
	}//FOR
}//FINDOVERTIMEPAY

void findregularhours(int hoursworked[], int regularhours[], int n){
	for (int i = 0; i<n; i++){
		if (hoursworked[i]>40) regularhours[i] = 40;
		else regularhours[i] = hoursworked[i];
	}//FOR
}//FINDREGULARHOURS

void findregularpay(int regularhours[], float regularpay[],
	float hourlyrate[], int n){
	for (int i = 0; i<n; i++){
		regularpay[i] = regularhours[i] * hourlyrate[i];
	}//FOR
}//FINDREGULARPAY
void findgrosspay(float regularpay[], float overtimepay[],
	float grosspay[], int n){
	for (int i = 0; i<n; i++){
		grosspay[i] = regularpay[i] + overtimepay[i];
	}//FOR
}//FINDGROSSPAY

void findtaxrate(float grosspay[], float taxrate[], int n){
	for (int i = 0; i<n; i++){
		if (grosspay[i]>4000.00) taxrate[i] = 0.40;
		else if (grosspay[i]>3000.00) taxrate[i] = 0.30;
		else if (grosspay[i]>1000.00) taxrate[i] = 0.20;
		else taxrate[i] = 0.10;
	}//FOR
}//FINDTAXRATE

void findtaxamount(float grosspay[], float taxamount[],
	float taxrate[], int n){
	for (int i = 0; i<n; i++){
		taxamount[i] = grosspay[i] * taxrate[i];
	}//FOR
}//FINDTAXAMOUNT

void findnetpay(float grosspay[], float netpay[], float taxamount[], int n){
	for (int i = 0; i<n; i++){
		netpay[i] = grosspay[i] - taxamount[i];
	}//FOR
}//FINDNETPAY

void printalldata(long int id[], string fname[], string lname[], int hoursworked[], float hourlyrate[],
	float overtimepay[], float grosspay[], float taxamount[],
	float netpay[], int n){
	float totalNetPay = 0;

	int i = 0;
	cout << setw(62) << "PAYROLL INSTITUTE" << endl;
	cout << setw(55) << "106 EASY WAYS LANE" << endl;
	cout << setw(58) << "PLEASANTVILLE N.Y. 11068" << endl;
	cout << " " << endl << endl;
	cout << "==================================================================== " << endl;
	cout << fixed << setprecision(2);
	cout << "EMP ID" << setw(12)
		<< "FIRST NAME" << setw(12)
		<< "LAST NAME" << setw(7)
		<< "HOURS" << setw(6)
		<< "RATE" << setw(10)
		<< "OVERPAY" << setw(11)
		<< "GROSSPAY" << setw(8)
		<< "TAX" << setw(11)
		<< "NETPAY" << endl;

	for (i; i<n; i++){
		totalNetPay += netpay[i];
		cout << "" << id[i] << setw(11)
			<< fname[i] << setw(13)
			<< lname[i] << setw(7)
			<< hoursworked[i] << setw(9)
			<< hourlyrate[i] << setw(7)
			<< overtimepay[i] << setw(12)
			<< grosspay[i] << setw(10)
			<< taxamount[i] << setw(10)
			<< netpay[i] << endl;
	}//FOR

	cout << "==================================================================== " << endl;
	cout << "AVERAGE NETPAY FOR ALL EMPLOYEES IS:" << setw(7) << totalNetPay / i << endl;
	cout << endl;
	system("PAUSE");
	cout << endl;
	cout << endl;
}//PRINTALLDATA

void sort(float table[], int n)
{
	int i, j;

	for (i = 0; i<n - 1; i++){
		for (j = n - 1; j>i; j--){
			if (table[j]<table[j - 1]){
				float hold = table[j];
				table[j] = table[j - 1];
				table[j - 1] = hold;
			}// end if
		}// end j
	}// end i
}
//end source code
}

On line 45, place a printalldata call before the sort, and leave the printalldata after the sort.

So basically your doing a before and after.

1
2
3
4
5
	printalldata(id, fname, lname, hoursworked, hourlyrate, overtimepay,
		grosspay, taxamount, netpay, n);
	sort(netpay, n);
	printalldata(id, fname, lname, hoursworked, hourlyrate, overtimepay,
		grosspay, taxamount, netpay, n);
Got it. Thanks much I knew it was nothing major but I couldn't quite pinpoint what I needed to do.
Topic archived. No new replies allowed.