Array Question

Hello everyone I have a question about the program that I have written down. In one of the options i am trying to ask the user to enter the data for an employee(s) (name, pay rate, hours worked) then i am supposed to be able to print out that employee's info by entering a number that corresponds to that employee. the problem is i keep getting an error stating hw6.cpp:41:42: error: cannot convert 'char (*)[65]' to 'char*' for argument '1' to 'void printEmployeePaycheck(char*, double*, double*)'. I thought that i hadd all parameters entered correctly so i'm not sure how to correct this let alone know if my function for printing out this data is correct. Any help and advice would be much appreciated. thanks.


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
  #include <iostream>
#include <iomanip>
#include <string>
using namespace std;

const int NAMELEN = 65;
const int SIZE = 20;

void printMenu();
void addEmployees(char name[][NAMELEN], double rate[], double hours[], int &count);
void displayAllEmployees(char name[][NAMELEN], double rate[], double hours[], int count);
void printEmployeePaycheck(char name[], double rate[], double hours[]);

int main()
{
    int count=0, choice;
    char name[SIZE][NAMELEN];

    double rate[SIZE], hours[SIZE];

    do
    {
        printMenu();
        cin >> choice;
        cout << endl;

        while(count == 0 && choice != 1)
        {
            cout << "You must add atleast one employee to the database! " << endl;
            cin >> choice;
        }

        switch(choice)
        {
            case 1:
                addEmployees(name, rate, hours, count);
                break;
            case 2:
                displayAllEmployees(name, rate, hours, count);
            case 3:
                printEmployeePaycheck(name, rate, hours);
                break;
            case 0:
                cout << "Goodbye. " << endl << endl;
                break;
            default:
                cout << "Invalid menu choice. Please enter valid ";
                cout << "menu choice ";
                cin >> choice;
        }
    }
    while(choice!=0);
    return(0);
}

void printMenu()
{

    cout << endl;
    cout << "Welcome to the Employee Paycheck Calculator " << endl;
    cout << "=========================================== " << endl;
    cout << "1.  Add employee record(s) to the database " << endl;
    cout << "2.  Print all employee records " << endl;
    cout << "3.  Print the paycheck for one employee " << endl;
    cout << "0.  Exit " << endl;
    cout << "=========================================== " << endl;
    cout << "Enter selection:  ";
}

void addEmployees(char name[][NAMELEN], double rate[], double hours[], int &count)
{
    cout << "How many employees do you wish to add? ";
    cin >> count;

    while (count < 1 || count > 20)
    {
        cout << "That is an invalid size. ";
        cout << "You must enter a value between 1 and 20. " << endl;
        cout << "How many employees do you wish to add? ";
        cin >> count;
    }

    for (int i = 0; i < count; i++)
    {
        cout << endl;
        cout << "Enter Employee " << i << " name: ";
        cin.ignore();
        cin.getline(name[i], NAMELEN);

        cout << "Enter " << name[i] << "'s pay rate: ";
        cin >> rate[i];

        cout << "Enter " << name[i] << "'s weekly hours: ";
        cin >> hours[i];
    }
                                               
}

void displayAllEmployees(char name[][NAMELEN], double rate[], double hours[], int count)
{
    cout << endl;
    cout << "Index" << "  " << "Name" << "\t\t";
    cout << "Rate" << "\t" << "Hours" << endl;

    for (int i = 0; i < count; i++)
    {
        cout << i << "\t" << name[i] << "\t\t";
        cout << rate[i] << "\t" << hours[i] << endl;
    }
}

void printEmployeePaycheck(char name[], double rate[], double hours[])
{
    int i;
    int count = 0;
    double pay = rate[i] * hours[i];

    for (i = 0; i < count; i++)
    {
        cout << "Enter an Employee Number: ";
        cin >> i;

        while (i < 1 || i > count)
        {
            cout << "Error: this number does not correspond to an employee. ";
            cout << "Please enter a valid number. " << endl;
            cin >> i;
        }
    }

    cout << "Employee: " << name[i] << "\t\t" << "Rate: " << rate[i];
    cout << "\t" << "Hours: " << hours[i] << "\t" << "Weekly Pay: ";
    cout << pay << endl;
}
Last edited on
printEmployeePaycheck( char name[] ... )

The first parameter of this function ONLY accepts a char array, yet what you've passed when calling the function @line 41 is a multidimensional char array :

1
2
3
4
5
6
7
char name[SIZE][NAMELEN];
// ...
// ...

case 3:
                printEmployeePaycheck(name, rate, hours);
                break;
Last edited on
Topic archived. No new replies allowed.