trouble with c-strings and loops

Hello everyone I'm working on a homework assignment and I'm trying to use add employees to a database. When entering an employees name I'm trying to use a C-string so that I can input the first and last name. The book i'm using instructs me to use the cin.getline command. The program compiles but doesn't allow me to input the employee name. It goes right to asking for the pay rate. Is there something I'm missing? Thanks for any help.

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
#include <iostream>
#include <iomanip>
#include <cstring>
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);

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

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

        switch(choice)
        {
            case 1:
                addEmployees(name, rate, hours, count);
                break;
            case 2:
                displayAllEmployees(name, rate, hours, count);
            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 << "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++) Having Trouble Here
    {
        cout << endl;
        cout << "Enter Employee " << i << " name: ";
        cin.getline(name[i], NAMELEN);

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

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

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

    for (int i = 0; i < count; i++)
    {
        cout << i << "\t" << name[i] << "\t";
        cout << rate[i] << "\t" << hours[i] << endl;
    }
}
Last edited on
I think this is very similar to this thread:
http://www.cplusplus.com/forum/beginner/116379/

I posted a solution to that problem over there; I think it should also work in this case.
Unless the problem you're having is actually something entirely different.
I tried to apply the fixes you recommended as well as used the simple coding Philosoraptizzle did in the beginning but unfortunately it didn't workout for me. it is still not allowing me to input the employee name.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for (int i = 0; i < count; i++) Having Trouble Here
    {
        cout << endl;
        cout << "Enter Employee " << i << " name: ";
       
        cin.ignore(); // add this**
      
        cin.getline(name[i], NAMELEN);

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

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


**when using getline() after the >> operator, you should discard the newline sent by pressing <enter> using cin.ignore(), otherwise getline() will read this newline and just continue into the next statement
Last edited on
Awesome! Thanks that worked perfectly
Topic archived. No new replies allowed.