pointer_array_sort() problems

I have to make a decision on how I want to call pointer_array_sort().

I think I can call it either as:

1
2
3
float netpay[5];

pointer_array_sort(netpay, 5);


or maybe can call it as:

1
2
3
4
5
6
7
float netpay[5];

float * p[5];

// initialize p elements to point to netpay elements

pointer_array_sort(p, 5);



The former will force me I think to go with:

1
2
3
void pointer_array_sort(float netpay[], int n);

// Equivalent: void pointer_array_sort(float * netpay, int n); 


while the latter will force me I think to go with:

1
2
3
void pointer_array_sort(float * p[], int n);

// Equivalent: void pointer_array_sort(float ** p, int n); 



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
#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(float*netpay, int n);

int main(){
     const int MAXSIZE=50;  //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);
     pointer_array_sort(netpay);
     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

void pointer_array_sort(float*values)
{
  int i, j;
  float*temp;
     int sortedflag=0;
     for(i=0;i<n;i++) p[i]=netpaty+i;//INITIALIZING POINTER ARRAY
     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
}
//end source code 


I've been working on this payroll program for some time and I think if I can figure this out I should be finished. My goal is to:

Sort the netpay by the pointers
Sort the net pays (salary) using an array of pointers . 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.

Anybody who can help me figure this one out?

Errors:
1.) C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp In function `void pointer_array_sort(float*)':
2.)139 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `n' undeclared (first use this function)
3.) (Each undeclared identifier is reported only once for each function it appears in.)
4.)139 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `p' undeclared (first use this function)
5.) 139 C:\Users\-6\Desktop\Dev-Cpp\ESC\Practice.cpp `netpaty' undeclared (first use this function)
closed account (o3hC5Di1)
Hi there,

The compiler errors are quite obvious I think:

1
2
3
4
5
6
7
8
9
void pointer_array_sort(float*values)
{
  int i, j;
  float*temp;
     int sortedflag=0;
     //i<n , n doesn't exist in this (function) scope
     // p[i], p doesn't exist in this (function) scope (you've used "values" in the function declarator)
     //natpaty typo + doesn't exist in this (function) scope
     for(i=0;i<n;i++) p[i]=netpaty+i


I'm not too good with pointers yet myself - hopefully someone else can assist you with those.

All the best,
NwN


Figured it out but thanks for the feedback guys
Topic archived. No new replies allowed.