Jonathan Lawrence
Jonathan Lawrence

Reputation: 17

User can't put input for second variable. C++

Whenever I run the program, I can only input a value for the first variable, employeeName, but when I hit enter after I input the value, I get a "press any key to continue" prompt. Can somebody please tell me what's wrong?

// Calculate how many hours an employee has worked

#include <iostream>
using namespace std;

int main() 
{


    //Declare Named Constants
    int const HOURS_IN_WORK_WEEK = 40;
    int const HOURS_IN_WORK_DAY = 8;

    //Declare Variables
    int employeeName;
    int hoursWorked;
    int totalWeeksWorked;
    int leftoverFromWeeks;
    int totalDaysWorked;
    int leftoverFromDays;
    int totalHoursWorked;


    //Get Input
    cout << "enter employee name: ";
    cin >> employeeName;

    cout << "Enter total hours worked: ";
    cin >> hoursWorked;


    //calculate total weeks, days, and hours worked
    totalWeeksWorked = hoursWorked / HOURS_IN_WORK_WEEK;
    leftoverFromWeeks = hoursWorked % HOURS_IN_WORK_WEEK;

    totalDaysWorked = leftoverFromWeeks / HOURS_IN_WORK_DAY;
    leftoverFromDays = leftoverFromWeeks % HOURS_IN_WORK_DAY;

    totalHoursWorked = leftoverFromDays;

    //Output
    cout << employeeName << "worked " << hoursWorked << "hours or " << totalWeeksWorked << "week(s), " << totalDaysWorked << "day(s), and " << totalHoursWorked << "hours.";






    system("pause");


}//End Main

Upvotes: 1

Views: 496

Answers (1)

Arnav Borborah
Arnav Borborah

Reputation: 11807

What I presume happened is that you unknowingly entered a string for the employee's name. However, if you look at your declaration:

int employeeName;

The type of the variable is int! Change this to std::string and use getline to read a space separated full name (std::cin will stop reading at whitespace, meaning the rest of the input will be attempted to be stored in an int, leading to the same behavior that happened with the first variable).

The input code would now change to:

cout << "enter employee name: ";
getline(cin, employeeName);

Also, on a side note, you should read why using system("pause") is not a good idea (Although it doesn't really matter for such a small program, it is useful knowledge).

Upvotes: 3

Related Questions