The program will accept some values from the user and will print out the following
1] Details of the user
• Worker ID – Alphanumeric (2 letters and three digits e.g. EF101) Full Name of the worker.
2] Gross Pay (GP)
• GP = Rate * Hours Worked o Rate is a constant of 11.25 ($11.25 per hour) o Hours Worked to be entered by the user.
3] Deduction
• Union fee o Constant of 50 ($50 per member) o Retirement is 10% of GP
4] Take Home Pay (THP)
• THP = GP – Deduction
#include <iostream>
#include <iomanip>
void check(char* id);
void check(double& hours);
void retype(const char* error_str, char* x);
int main() {
char workerID[1024];
double GP, hours, Deduction, THP;
const float Rate = 11.25;
std::cout << "Please enter worker ID: ";
std::cin >> workerID;
check(workerID);
std::cout << "Please enter hours worked: ";
std::cin >> hours;
check(hours);
GP = Rate * hours;
Deduction = 50 + ((GP - 50) * 0.1);
THP = GP - Deduction;
std::cout << std::fixed;
std::cout << std::setprecision(2);
std::cout << "\nWorker ID: " << workerID << "\n";
std::cout << "Gross Pay (GP): " << GP << "\n";
std::cout << "Deduction: " << Deduction << "\n";
std::cout << "Take Home Pay (THP): " << THP << std::endl;
return 0;
}
void check(char* id) {
for (int i = 0; i < 5; i++) {
if (i < 2) {
if (isalpha(id[i]) && strlen(id) < 6 ) {
continue;
} else {
retype("Wrong ID! Re-enter please: ", id);
i = 0;
}
} else {
if (isdigit(id[i]) && strlen(id) < 6) {
continue;
} else {
retype("Wrong worker ID! Re-enter please: ", id);
i = 0;
}
}
}
}
void check(double& hours) {
while (!std::cin || hours <= 0) {
std::cout << "Wrong hours! Re-enter please: ";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> hours;
}
}
void retype(const char* error_str, char* x) {
std::cout << error_str;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> x;
}
Comments
Leave a comment