/* Exercise 4.28 Solution */ #include void main () { int payCode, managers = 0, hWorkers = 0, cWorkers = 0; int pWorkers = 0, pieces; float mSalary, hSalary, cSalary, pSalary, hours; float otPay, otHours, pay; while (1) { printf ("\nEnter paycode (-1 to end): "); scanf ("%d", &payCode); if (payCode == -1) break; switch (payCode) { case 1: printf ("Manager selected.\n"); printf ("Enter weekly salary: "); scanf ("%f", &mSalary); printf ("The manager's pay is $%.2f\n", mSalary); ++managers; break; case 2: printf ("Hourly worker selected.\n"); printf ("Enter the hourly salary: "); scanf ("%f", &hSalary); printf ("Enter the total hours worked: "); scanf ("%f", &hours); if (hours > 40.0) { otHours = hours - 40.0; otPay = hSalary * 1.5 * otHours + hSalary * 40.0; printf ("Worker has worked %.1f overtime hours.\n", otHours); printf ("Workers pay is $%.2f\n", otPay); } else { pay = hSalary * hours; printf ("Worker's pay is $%.2f\n", pay); } ++hWorkers; break; case 3: printf ("Commission worker selected.\n"); printf ("Enter gross weekly sales: "); scanf ("%f", &cSalary); pay = 250.0 + 0.057 * cSalary; printf ("Commission Worker's pay is $%.2f\n", pay); ++cWorkers; break; case 4: printf ("Piece worker selected.\nEnter number of pieces: "); scanf ("%d", &pieces); printf ("Enter wage per piece: "); scanf ("%f", &pSalary); pay = pieces * pSalary; printf ("Piece Worker's pay is $%.2f\n", pay); ++pWorkers; break; default : printf ("Invalid pay code.\n"); break; } } printf ("\n\n"); printf ("Total number of managers paid : %d\n", managers); printf ("Total number of hourly workers paid : %d\n", hWorkers); printf ("Total number of commission workers paid : %d\n", cWorkers); printf ("Total number of piece workers paid : %d\n", pWorkers); }