| | |
Problem in tryAgain function. Please Help!
Please support our C++ advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Oct 2004
Posts: 18
Reputation:
Solved Threads: 0
If you type in employee ID, and then a character (other than s, h or c) including the enter key. You get a message that says, "Do you want to try again or quit?" "Type q or Q to quit any other key to continue." If you hit any other key than q or Q, nothing happens.
I am trying to get the program to go to the else part of the function when another key than q or Q is hit, including the enter key. But I am out of ideas.
I hope someone out there can help. Any suggestions will be much appreciated. Thank you!
#include <iostream>
#include <iomanip>
using namespace std;
#include <cstdlib>
#include <string>
bool getEmployeeData (int*, char*, double*, double*, double*, double);
float calculateGrossPay (char, double, double, double);
void displayEmployeeInfo(int, char, double);
bool tryAgain(char*);
bool isValidStatus(char*);
int main()
{
int ID = 0;
double Salary = 0;
double hourwrk = 0;
double sales = 0;
double grossPay = 0;
char pyrllSt = ' ';
float totalPayroll = 0.0;
bool result = true;
while (result)
{
result = getEmployeeData (&ID, &pyrllSt, &Salary, &hourwrk, &sales, totalPayroll);
if (result)
{
grossPay = calculateGrossPay(pyrllSt, Salary, hourwrk, sales);
totalPayroll += grossPay;
displayEmployeeInfo (ID, pyrllSt, grossPay);
}
else
{
cout << "Total Payroll for this month: " << endl;
cout << fixed << showpoint << setprecision(2);
cout << "$" << totalPayroll << endl;
}
}
return (1);
}
bool getEmployeeData (int *ID, char *pyrllSt, double *Salary, double *hourwrk, double *sales, double totalPayroll)
{
cout << "Enter employee ID: " << endl;
cin >> *ID;
if (*ID > 0)
{
cout << "Enter payroll status: " << endl;
cin >> *pyrllSt;
if (isValidStatus(pyrllSt))
{
if (*pyrllSt == 's' || *pyrllSt == 'S')
{
cout << "Enter monthly salary" << endl;
cin >> *Salary;
}
if (*pyrllSt == 'h' || *pyrllSt == 'H')
{
cout << "Enter number of hours worked this month: " << endl;
cin >> *hourwrk;
}
if (*pyrllSt == 'c' || *pyrllSt == 'C')
{
cout << "Enter total sales for this month: " << endl;
cin >> *sales;
}
}//if isValid Status
return true;
}
else
{
return false;
}
}
bool isValidStatus (char *pyrllSt)
{
bool isGood = true;
while (isGood)
{
isGood = (*pyrllSt == 's' || *pyrllSt == 'S' || *pyrllSt =='h' || *pyrllSt == 'H' || *pyrllSt == 'c' || *pyrllSt =='C');
if (isGood)
{
return true;
}
else
{
isGood = tryAgain(pyrllSt);
}
}
return false;
}
bool tryAgain(char *pyrllSt)
{
char quit;
cout << "Type Q or q to quit, any other key to continue: " << endl;
cin >> quit;
if (quit == 'q' || quit == 'Q')
{
cout << "*** Program Terminated ***" << endl;
return false;
}
else
{
cout << "Re-enter: 's' or 'S' for salaried, 'h' or 'H' for hourly, " << endl;
cout << "'c' or 'C' for commissioned." << endl;
cin >> *pyrllSt;
return true;
}
}
float calculateGrossPay (char pyrllSt, double Salary, double hourwrk, double sales)
{
float grossPay;
if (pyrllSt == 's' || pyrllSt == 'S')
{
grossPay = Salary;
}
if (pyrllSt == 'h' || pyrllSt == 'H')
{
grossPay = hourwrk * 18.75;
}
if (pyrllSt == 'c' || pyrllSt == 'C')
{
grossPay = sales * 0.06 + 1000.00;
}
return grossPay;
}
void displayEmployeeInfo (int ID, char pyrllSt, double grossPay)
{
cout << "Employee ID: " << ID << endl;
cout << "Payroll Status: " << pyrllSt << endl;
cout << "Gross Pay: " << fixed << showpoint << setprecision(2);
cout << "$" << grossPay << endl;
}
I am trying to get the program to go to the else part of the function when another key than q or Q is hit, including the enter key. But I am out of ideas.
I hope someone out there can help. Any suggestions will be much appreciated. Thank you!
#include <iostream>
#include <iomanip>
using namespace std;
#include <cstdlib>
#include <string>
bool getEmployeeData (int*, char*, double*, double*, double*, double);
float calculateGrossPay (char, double, double, double);
void displayEmployeeInfo(int, char, double);
bool tryAgain(char*);
bool isValidStatus(char*);
int main()
{
int ID = 0;
double Salary = 0;
double hourwrk = 0;
double sales = 0;
double grossPay = 0;
char pyrllSt = ' ';
float totalPayroll = 0.0;
bool result = true;
while (result)
{
result = getEmployeeData (&ID, &pyrllSt, &Salary, &hourwrk, &sales, totalPayroll);
if (result)
{
grossPay = calculateGrossPay(pyrllSt, Salary, hourwrk, sales);
totalPayroll += grossPay;
displayEmployeeInfo (ID, pyrllSt, grossPay);
}
else
{
cout << "Total Payroll for this month: " << endl;
cout << fixed << showpoint << setprecision(2);
cout << "$" << totalPayroll << endl;
}
}
return (1);
}
bool getEmployeeData (int *ID, char *pyrllSt, double *Salary, double *hourwrk, double *sales, double totalPayroll)
{
cout << "Enter employee ID: " << endl;
cin >> *ID;
if (*ID > 0)
{
cout << "Enter payroll status: " << endl;
cin >> *pyrllSt;
if (isValidStatus(pyrllSt))
{
if (*pyrllSt == 's' || *pyrllSt == 'S')
{
cout << "Enter monthly salary" << endl;
cin >> *Salary;
}
if (*pyrllSt == 'h' || *pyrllSt == 'H')
{
cout << "Enter number of hours worked this month: " << endl;
cin >> *hourwrk;
}
if (*pyrllSt == 'c' || *pyrllSt == 'C')
{
cout << "Enter total sales for this month: " << endl;
cin >> *sales;
}
}//if isValid Status
return true;
}
else
{
return false;
}
}
bool isValidStatus (char *pyrllSt)
{
bool isGood = true;
while (isGood)
{
isGood = (*pyrllSt == 's' || *pyrllSt == 'S' || *pyrllSt =='h' || *pyrllSt == 'H' || *pyrllSt == 'c' || *pyrllSt =='C');
if (isGood)
{
return true;
}
else
{
isGood = tryAgain(pyrllSt);
}
}
return false;
}
bool tryAgain(char *pyrllSt)
{
char quit;
cout << "Type Q or q to quit, any other key to continue: " << endl;
cin >> quit;
if (quit == 'q' || quit == 'Q')
{
cout << "*** Program Terminated ***" << endl;
return false;
}
else
{
cout << "Re-enter: 's' or 'S' for salaried, 'h' or 'H' for hourly, " << endl;
cout << "'c' or 'C' for commissioned." << endl;
cin >> *pyrllSt;
return true;
}
}
float calculateGrossPay (char pyrllSt, double Salary, double hourwrk, double sales)
{
float grossPay;
if (pyrllSt == 's' || pyrllSt == 'S')
{
grossPay = Salary;
}
if (pyrllSt == 'h' || pyrllSt == 'H')
{
grossPay = hourwrk * 18.75;
}
if (pyrllSt == 'c' || pyrllSt == 'C')
{
grossPay = sales * 0.06 + 1000.00;
}
return grossPay;
}
void displayEmployeeInfo (int ID, char pyrllSt, double grossPay)
{
cout << "Employee ID: " << ID << endl;
cout << "Payroll Status: " << pyrllSt << endl;
cout << "Gross Pay: " << fixed << showpoint << setprecision(2);
cout << "$" << grossPay << endl;
}
![]() |
Similar Threads
- Problem with random function (C++)
- Problem on calling a function (C++)
- problem with calling a function (C++)
- problem in sqlcxt() function in pro*c (C++)
- problem with system() function... (C++)
- Function Problem. Please help (PHP)
- tryAgain function not working properly! (C++)
Other Threads in the C++ Forum
- Previous Thread: I could use some help with ofstream
- Next Thread: Structure Help Please
Views: 1426 | Replies: 1
| Thread Tools | Search this Thread |
Tag cloud for C++
6 add api array arrays beginner binary c++ c/c++ calculator char class classes code compile compiler console conversion convert count data delete desktop directshow dll dynamic encryption error file forms fstream function functions game givemetehcodez google graph homeworkhelper iamthwee ifstream input int integer java lazy lib linkedlist linker linux loop looping loops map math matrix memory microsoft newbie news number output parameter pointer problem program programming project proxy python random read recursion recursive reference return sort stream string strings struct studio system template templates test text tree unix url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets






