#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int ReadData ( int [ ] , int [ ] , string[ ] , string[ ] , char [ ] , int [ ] , float [ ] , const int ) ;
int main( ) {
const int maxSIZE = 100 ;
int empID[ maxSIZE] , empHOUR[ maxSIZE] , empOHOUR[ maxSIZE] , empSSN[ maxSIZE] , numEMP, i;
char empSTAT[ maxSIZE] ;
string firstNAME[ maxSIZE] , lastNAME[ maxSIZE] ;
float empHRATE[ maxSIZE] , empGROSS[ maxSIZE] , empREGP[ maxSIZE] , empTAX[ maxSIZE] , empNET[ maxSIZE] , empOPAY[ maxSIZE] , TAX;
cout << "___________________" << endl<< endl;
cout << "HROMADSKE TV EUROPE" << endl;
cout << " PAYROLL PROGRAM " << endl;
cout << "___________________" << endl<< endl;
cout << setiosflags( ios:: fixed | ios:: showpoint | ios:: left ) ;
cout << setfill( ' ' ) << setw( 5 ) << "ID" << setw( 12 ) << "First Name" << setw( 15 ) << "Last Name" << setw( 6 ) << "STAT" << setw( 4 ) << "SSN" << setw( 4 ) << "HW" << setw( 7 ) << "HR" << setw( 4 ) << "OTH" << setw( 8 ) << "OTP" << setw( 8 ) << "REGP" << setw( 9 ) << "GROSS" << setw( 7 ) << "TAX" << setw( 9 ) << "NET" << endl;
cout << setfill( '=' ) << setw( 5 ) << "" << setw( 12 ) << "" << setw( 15 ) << "" << setw( 6 ) << "" << setw( 4 ) << "" << setw( 4 ) << "" << setw( 7 ) << "" << setw( 4 ) << "" << setw( 8 ) << "" << setw( 8 ) << "" << setw( 9 ) << "" << setw( 7 ) << "" << setw( 9 ) << "" << endl;
numEMP = ReadData( empID, empHOUR, firstNAME, lastNAME, empSTAT, empSSN, empHRATE, maxSIZE) - 1 ;
for ( i= 0 ; i<= numEMP; i++ ) {
if ( empHOUR[ i] > 40 ) {
empOHOUR[ i] = empHOUR[ i] - 40 ;
empOPAY[ i] = empOHOUR[ i] * empHRATE[ i] * 1.5 ;
empREGP[ i] = 40 * empHRATE[ i] ;
}
else {
empOHOUR[ i] = 0 ;
empOPAY[ i] = 0 ;
empREGP[ i] = empHOUR[ i] * empHRATE[ i] ;
}
}
for ( i= 0 ; i<= numEMP; i++ ) {
empGROSS[ i] = empREGP[ i] + empOPAY[ i] ;
}
for ( i= 0 ; i<= numEMP; i++ ) {
if ( empGROSS[ i] > 1000 ) {
TAX= 0.3 ;
}
else {
if ( ( empGROSS[ i] > 800 ) && ( empGROSS[ i] <= 1000 ) ) {
TAX= 0.2 ;
}
else {
if ( ( empGROSS[ i] > 500 ) && ( empGROSS[ i] <= 800 ) ) {
TAX= 0.1 ;
}
else TAX= 0 ;
}
}
empTAX[ i] = empGROSS[ i] * TAX;
}
for ( i= 0 ; i<= numEMP; i++ ) {
empNET[ i] = empGROSS[ i] - empTAX[ i] ;
}
for ( i= 0 ; i<= numEMP; i++ ) {
cout << setiosflags( ios:: fixed | ios:: showpoint | ios:: left ) << setprecision( 2 ) ;
cout << setfill( ' ' ) << setw( 5 ) << empID[ i] << setw( 12 ) << firstNAME[ i] << setw( 15 ) << lastNAME[ i] << setw( 6 ) << empSTAT[ i] << setw( 4 ) << empSSN[ i] << setw( 4 ) << empHOUR[ i] << setw( 7 ) << empHRATE[ i] << setw( 4 ) << empOHOUR[ i] << setw( 8 ) << empOPAY[ i] << setw( 8 ) << empREGP[ i] << setw( 9 ) << empGROSS[ i] << setw( 7 ) << empTAX[ i] << setw( 9 ) << empNET[ i] << endl;
}
return 0 ;
}
int ReadData ( int empID[ ] , int empHOUR[ ] , string firstNAME[ ] , string lastNAME[ ] , char empSTAT[ ] , int empSSN[ ] , float empHRATE[ ] , int numEMP )
{
string str;
ifstream fin( "employee.in" ) ;
getline( fin, str) ;
numEMP= 0 ;
while ( ! fin.eof ( ) )
{
fin >> empID[ numEMP] >> firstNAME[ numEMP] >> lastNAME[ numEMP] >> empSTAT[ numEMP] >> empSSN[ numEMP] >> empHOUR[ numEMP] >> empHRATE[ numEMP] ;
numEMP++ ;
}
return numEMP;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvbWFuaXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgUmVhZERhdGEgKGludCBbXSwgaW50W10sIHN0cmluZ1tdLCBzdHJpbmdbXSwgY2hhcltdLCBpbnRbXSwgZmxvYXRbXSwgY29uc3QgaW50KTsKCmludCBtYWluKCl7Cgljb25zdCBpbnQgbWF4U0laRSA9IDEwMDsKCQoJaW50IGVtcElEW21heFNJWkVdLCBlbXBIT1VSW21heFNJWkVdLCBlbXBPSE9VUlttYXhTSVpFXSwgZW1wU1NOW21heFNJWkVdLCBudW1FTVAsIGk7CgljaGFyIGVtcFNUQVRbbWF4U0laRV07CglzdHJpbmcgZmlyc3ROQU1FW21heFNJWkVdLCBsYXN0TkFNRVttYXhTSVpFXTsKCWZsb2F0IGVtcEhSQVRFW21heFNJWkVdLCBlbXBHUk9TU1ttYXhTSVpFXSwgZW1wUkVHUFttYXhTSVpFXSwgZW1wVEFYW21heFNJWkVdLCBlbXBORVRbbWF4U0laRV0sIGVtcE9QQVlbbWF4U0laRV0sIFRBWDsKCQoJY291dDw8Il9fX19fX19fX19fX19fX19fX18iPDxlbmRsPDxlbmRsOwoJY291dDw8IkhST01BRFNLRSBUViBFVVJPUEUiPDxlbmRsOwoJY291dDw8IiAgUEFZUk9MTCBQUk9HUkFNICAiPDxlbmRsOwoJY291dDw8Il9fX19fX19fX19fX19fX19fX18iPDxlbmRsPDxlbmRsOwoJY291dDw8c2V0aW9zZmxhZ3MoaW9zOjpmaXhlZHxpb3M6OnNob3dwb2ludHxpb3M6OmxlZnQpOwoJY291dDw8c2V0ZmlsbCgnICcpPDxzZXR3KDUpPDwiSUQiPDxzZXR3KDEyKTw8IkZpcnN0IE5hbWUiPDxzZXR3KDE1KTw8Ikxhc3QgTmFtZSI8PHNldHcoNik8PCJTVEFUIjw8c2V0dyg0KTw8IlNTTiI8PHNldHcoNCk8PCJIVyI8PHNldHcoNyk8PCJIUiI8PHNldHcoNCk8PCJPVEgiPDxzZXR3KDgpPDwiT1RQIjw8c2V0dyg4KTw8IlJFR1AiPDxzZXR3KDkpPDwiR1JPU1MiPDxzZXR3KDcpPDwiVEFYIjw8c2V0dyg5KTw8Ik5FVCI8PGVuZGw7Cgljb3V0PDxzZXRmaWxsKCc9Jyk8PHNldHcoNSk8PCIiPDxzZXR3KDEyKTw8IiI8PHNldHcoMTUpPDwiIjw8c2V0dyg2KTw8IiI8PHNldHcoNCk8PCIiPDxzZXR3KDQpPDwiIjw8c2V0dyg3KTw8IiI8PHNldHcoNCk8PCIiPDxzZXR3KDgpPDwiIjw8c2V0dyg4KTw8IiI8PHNldHcoOSk8PCIiPDxzZXR3KDcpPDwiIjw8c2V0dyg5KTw8IiI8PGVuZGw7CgoJbnVtRU1QID0gUmVhZERhdGEoZW1wSUQsIGVtcEhPVVIsIGZpcnN0TkFNRSwgbGFzdE5BTUUsIGVtcFNUQVQsIGVtcFNTTiwgZW1wSFJBVEUsIG1heFNJWkUpIC0gMTsKCQoJZm9yIChpPTA7IGk8PW51bUVNUDsgaSsrKSB7CgkJaWYgKGVtcEhPVVJbaV0gPiA0MCkgewoJCQllbXBPSE9VUltpXSA9IGVtcEhPVVJbaV0gLSA0MDsKCQkJZW1wT1BBWVtpXSA9IGVtcE9IT1VSW2ldICogZW1wSFJBVEVbaV0gKiAxLjU7CgkJCWVtcFJFR1BbaV0gPSA0MCAqIGVtcEhSQVRFW2ldOwoJCX0KCQllbHNlIHsKCQkJZW1wT0hPVVJbaV0gPSAwOwoJCQllbXBPUEFZW2ldID0gMDsKCQkJZW1wUkVHUFtpXSA9IGVtcEhPVVJbaV0qIGVtcEhSQVRFW2ldOwoJCX0KCX0KCQoJZm9yIChpPTA7IGk8PW51bUVNUDsgaSsrKSB7CgkJZW1wR1JPU1NbaV0gPSBlbXBSRUdQW2ldICsgZW1wT1BBWVtpXTsKCX0KCQoJZm9yIChpPTA7IGk8PW51bUVNUDsgaSsrKSB7CgkJaWYoZW1wR1JPU1NbaV0gPiAxMDAwKSB7CgkJCVRBWD0wLjM7CgkJfQoJCWVsc2UgewoJCQlpZigoZW1wR1JPU1NbaV0+ODAwKSAmJiAoZW1wR1JPU1NbaV08PTEwMDApKSB7CgkJCQlUQVg9MC4yOwoJCQl9CgkJCWVsc2UgewoJCQkJaWYoKGVtcEdST1NTW2ldPjUwMCkgJiYgKGVtcEdST1NTW2ldPD04MDApKSB7CgkJCQkJVEFYPTAuMTsKCQkJCX0KCQkJCWVsc2UgVEFYPTA7CgkJCX0KCQl9CgkJZW1wVEFYW2ldID0gZW1wR1JPU1NbaV0gKiBUQVg7CQoJfQoJCglmb3IgKGk9MDsgaTw9bnVtRU1QOyBpKyspIHsKCQllbXBORVRbaV0gPSBlbXBHUk9TU1tpXSAtIGVtcFRBWFtpXTsKCX0KCQoJZm9yIChpPTA7IGk8PW51bUVNUDsgaSsrKSB7CgkJY291dDw8c2V0aW9zZmxhZ3MoaW9zOjpmaXhlZHxpb3M6OnNob3dwb2ludHxpb3M6OmxlZnQpPDxzZXRwcmVjaXNpb24oMik7CgkJY291dDw8c2V0ZmlsbCgnICcpPDxzZXR3KDUpPDxlbXBJRFtpXTw8c2V0dygxMik8PGZpcnN0TkFNRVtpXTw8c2V0dygxNSk8PGxhc3ROQU1FW2ldPDxzZXR3KDYpPDxlbXBTVEFUW2ldPDxzZXR3KDQpPDxlbXBTU05baV08PHNldHcoNCk8PGVtcEhPVVJbaV08PHNldHcoNyk8PGVtcEhSQVRFW2ldPDxzZXR3KDQpPDxlbXBPSE9VUltpXTw8c2V0dyg4KTw8ZW1wT1BBWVtpXTw8c2V0dyg4KTw8ZW1wUkVHUFtpXTw8c2V0dyg5KTw8ZW1wR1JPU1NbaV08PHNldHcoNyk8PGVtcFRBWFtpXTw8c2V0dyg5KTw8ZW1wTkVUW2ldPDxlbmRsOwoJfQoJCglyZXR1cm4gMDsKfQoKaW50IFJlYWREYXRhIChpbnQgZW1wSURbXSwgaW50IGVtcEhPVVJbXSwgc3RyaW5nIGZpcnN0TkFNRVtdLCBzdHJpbmcgbGFzdE5BTUVbXSwgY2hhciBlbXBTVEFUW10sIGludCBlbXBTU05bXSwgZmxvYXQgZW1wSFJBVEVbXSwgaW50IG51bUVNUCApCnsKCXN0cmluZyBzdHI7CglpZnN0cmVhbSBmaW4oImVtcGxveWVlLmluIik7CglnZXRsaW5lKGZpbiwgc3RyKTsKCQoJbnVtRU1QPTA7CgkJCQoJd2hpbGUoIWZpbi5lb2YoKSkKCXsKCQlmaW4gPj4gZW1wSURbbnVtRU1QXSA+PiBmaXJzdE5BTUVbbnVtRU1QXSA+PiBsYXN0TkFNRVtudW1FTVBdID4+IGVtcFNUQVRbbnVtRU1QXSA+PiBlbXBTU05bbnVtRU1QXSA+PiBlbXBIT1VSW251bUVNUF0gPj4gZW1wSFJBVEVbbnVtRU1QXTsKCQludW1FTVArKzsKCX0KCQoJcmV0dXJuIG51bUVNUDsKfQ==