Sort the net pays (salary) using an array of pointers (do not change the data in the original array). For now, display only the net pays before sorting Sort the net pays (salary) using an array of pointers (do not change the data in the original array). For now, display only the net pays before sorting and after sorting.
My manager had me learn C++ basics and I made an entire payroll program using 5 employees. I first learned the main program, then functions, then average's, and sorting. Now the final part I have to do on this program that I've been working a month on now is Program 3 above. He wanted it due last week wed and this last part I'm having trouble with. Can somebody please help me out? Here's what I have with errors:
#include <iostream>
#include<fstream>//file input output stream
using namespace std;
//function prototypes
int readalldata(long int[], int[], float[], const int);
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[], int[], float[], float[], float[], float[], float[], int);
void sort(float[], int);
void pointer_array_sort(int*values);
int main(){
const int MAXSIZE=50;
int netpay[MAXSIZE]; //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];
//function calls
n=readalldata(id, 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);
printalldata(id, hoursworked, hourlyrate, overtimepay,
grosspay, taxamount, netpay, n);
sort(netpay, n);
printalldata(id, hoursworked, hourlyrate, overtimepay,
grosspay, taxamount, netpay, n);
return 0;
}//MAIN
//function definitions
int readalldata(long int id[], int hoursworked[], float hourlyrate[], int n){
ifstream fin("employee.txt");
n=0;
while(fin>>id[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[], int hoursworked[], float hourlyrate[],
float overtimepay[], float grosspay[], float taxamount[],
float netpay[], int n){
float totalNetPay=0;
int i=0;
cout<<"EMP ID"<<"\t"<<"HOURS"<<"\t"<<"RATE"<<"\t"
<<"OVERPAY"<<"\t"<<" GROSSPAY"<<"\t"<<" TAX"<<"\t"
<<"NETPAY"<<endl;
for(i; i<n; i++){
totalNetPay +=netpay[i];
cout<<""<<id[i]<<"\t"<<hoursworked[i]<<"\t"<<hourlyrate[i]
<<"\t"<<overtimepay[i]<<"\t\t"<<grosspay[i]<<"\t\t"
<<taxamount[i]<<"\t"<<netpay[i]<<endl;
}//FOR
cout<<"The net pay average of the employees are: "<<totalNetPay/i<<endl;
system("PAUSE");
}//PRINTALLDATA
int*arraypointer=&netpay;
int sortednetpay=pointer_array_sort(arraypointer);
void pointer_array_sort(int*Values)
{
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
Here's what I have with errors:
1.)C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp In function `int main()':
2.)21 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp expected `,' or `;' before "int"
3.)21 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp At global scope:
4.)134 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `netpay' was not declared in this scope
5.)135 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp void value not ignored as it ought to be
6.) C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp In function `void pointer_array_sort(int*)':
7.)140 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `n' undeclared (first use this function)
8.) (Each undeclared identifier is reported only once for each function it appears in.)
9.)142 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `table' undeclared (first use this function)
I made an example program using pointers to sort:
#include<iostream.h>
int main(){
const int n=5;
int item[n]={2,5,3,1,8};
int *p[n];
int i,j;
int*temp;
int sortedflag=0;
for(i=0;i<n;i++) p[i]=item+i;//INITIALIZING POINTER ARRAY
for(i=0;i<n;i++)cout<<*p[i]<<" ";
while(!sortedflag){
sortedflag=1;
for(j=0;j<n-1;j++){
if(*p[j]>*p[j+1]){
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
sortedflag=0; }//SWAP
}//J
}//I
cout<<endl<<"SORTED ARRAY: ";
for(i=0;i<n;i++)cout<<*p[i]<<" ";
system("PAUSE");
}//MAIN
Here's my "employee.txt" :
8572 42 12.00
6423 40 15.00
7465 45 10.00
2477 40 16.00
5996 44 18.00
I am on the right track I believe but I have some serious problems. How to I incorporate the sample program to make my payroll program work? Once it comes to additing it into a program full of functions I get confused. Can somebody please help me out? I've been working on this every night and I have to finish it. Thank you for anybody who replies

New Topic/Question
Reply



MultiQuote



|