fork download
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #define SIZE 5
  6. #define STD_HOURS 40.0
  7. #define OT_RATE 1.5
  8. #define FED_TAX_RATE 0.25
  9.  
  10. struct name {
  11. char firstName[10];
  12. char lastName[10];
  13. };
  14.  
  15. struct employee {
  16. struct name empName;
  17. char taxState[3];
  18. long int clockNumber;
  19. float wageRate, hours, overtimeHrs;
  20. float grossPay, stateTax, fedTax, netPay;
  21. };
  22.  
  23. struct totals {
  24. float wage, hours, overtime, gross, stateTax, fedTax, net;
  25. };
  26.  
  27. struct min_max {
  28. float min[7], max[7];
  29. };
  30.  
  31. void getHours(struct employee data[], int size);
  32. void calculatePay(struct employee data[], int size);
  33. void printEmp(struct employee data[], int size);
  34. void printStatistics(struct employee data[], int size);
  35.  
  36. int main(void)
  37. {
  38. struct employee data[SIZE] = {
  39. {{"Connie", "Cobol"}, "MA", 98401, 10.60},
  40. {{"Mary", "Apl"}, "NH", 526488, 9.75},
  41. {{"Frank", "Fortran"}, "VT", 765349, 10.50},
  42. {{"Jeff", "Ada"}, "NY", 34645, 12.25},
  43. {{"Anton", "Pascal"}, "CA", 127615, 8.35}
  44. };
  45.  
  46. getHours(data, SIZE);
  47. calculatePay(data, SIZE);
  48. printEmp(data, SIZE);
  49. printStatistics(data, SIZE);
  50.  
  51. return 0;
  52. }
  53.  
  54. void getHours(struct employee data[], int size)
  55. {
  56. for (int i = 0; i < size; i++) {
  57. printf("Enter hours for employee %06li: ",
  58. data[i].clockNumber);
  59. scanf("%f", &data[i].hours);
  60. }
  61. }
  62.  
  63. void calculatePay(struct employee data[], int size)
  64. {
  65. for (int i = 0; i < size; i++) {
  66. float rate = 0.08;
  67.  
  68. data[i].overtimeHrs =
  69. data[i].hours > STD_HOURS
  70. ? data[i].hours - STD_HOURS : 0;
  71.  
  72. data[i].grossPay =
  73. (data[i].hours - data[i].overtimeHrs) *
  74. data[i].wageRate +
  75. data[i].overtimeHrs * data[i].wageRate * OT_RATE;
  76.  
  77. if (strcmp(data[i].taxState, "MA") == 0)
  78. rate = 0.05;
  79. else if (strcmp(data[i].taxState, "NH") == 0)
  80. rate = 0.00;
  81. else if (strcmp(data[i].taxState, "VT") == 0)
  82. rate = 0.06;
  83. else if (strcmp(data[i].taxState, "CA") == 0)
  84. rate = 0.07;
  85.  
  86. data[i].stateTax = data[i].grossPay * rate;
  87. data[i].fedTax = data[i].grossPay * FED_TAX_RATE;
  88. data[i].netPay = data[i].grossPay -
  89. data[i].stateTax - data[i].fedTax;
  90. }
  91. }
  92.  
  93. void printEmp(struct employee data[], int size)
  94. {
  95. printf("\n%-20s %-5s %8s %7s %6s %6s %8s %8s %8s %8s\n",
  96. "Name", "State", "Clock#", "Wage",
  97. "Hours", "OT", "Gross", "StateTax",
  98. "FedTax", "NetPay");
  99.  
  100. for (int i = 0; i < size; i++) {
  101. char name[21];
  102.  
  103. snprintf(name, sizeof(name), "%s %s",
  104. data[i].empName.firstName,
  105. data[i].empName.lastName);
  106.  
  107. printf("%-20s %-5s %08li %7.2f %6.1f %6.1f "
  108. "%8.2f %8.2f %8.2f %8.2f\n",
  109. name, data[i].taxState, data[i].clockNumber,
  110. data[i].wageRate, data[i].hours,
  111. data[i].overtimeHrs, data[i].grossPay,
  112. data[i].stateTax, data[i].fedTax,
  113. data[i].netPay);
  114. }
  115. }
  116.  
  117. void printStatistics(struct employee data[], int size)
  118. {
  119. float total[7] = {0};
  120. float min[7], max[7];
  121.  
  122. for (int i = 0; i < size; i++) {
  123. float values[7] = {
  124. data[i].wageRate, data[i].hours,
  125. data[i].overtimeHrs, data[i].grossPay,
  126. data[i].stateTax, data[i].fedTax,
  127. data[i].netPay
  128. };
  129.  
  130. for (int j = 0; j < 7; j++) {
  131. total[j] += values[j];
  132.  
  133. if (i == 0 || values[j] < min[j])
  134. min[j] = values[j];
  135.  
  136. if (i == 0 || values[j] > max[j])
  137. max[j] = values[j];
  138. }
  139. }
  140.  
  141. printf("\n\nStatistics (Wage Hours OT Gross StateTax FedTax NetPay)\n");
  142.  
  143. printf("Totals: ");
  144. for (int j = 0; j < 7; j++)
  145. printf("%8.2f ", total[j]);
  146.  
  147. printf("\nAverages: ");
  148. for (int j = 0; j < 7; j++)
  149. printf("%8.2f ", total[j] / size);
  150.  
  151. printf("\nMinimum: ");
  152. for (int j = 0; j < 7; j++)
  153. printf("%8.2f ", min[j]);
  154.  
  155. printf("\nMaximum: ");
  156. for (int j = 0; j < 7; j++)
  157. printf("%8.2f ", max[j]);
  158.  
  159. printf("\n");
  160. }
Success #stdin #stdout 0s 5320KB
stdin
51.0   
42.5
37.0
45.0
40.0
stdout
Enter hours for employee 098401: Enter hours for employee 526488: Enter hours for employee 765349: Enter hours for employee 034645: Enter hours for employee 127615: 
Name                 State   Clock#    Wage  Hours     OT    Gross StateTax   FedTax   NetPay
Connie Cobol         MA    00098401   10.60   51.0   11.0   598.90    29.95   149.73   419.23
Mary Apl             NH    00526488    9.75   42.5    2.5   426.56     0.00   106.64   319.92
Frank Fortran        VT    00765349   10.50   37.0    0.0   388.50    23.31    97.12   268.07
Jeff Ada             NY    00034645   12.25   45.0    5.0   581.88    46.55   145.47   389.86
Anton Pascal         CA    00127615    8.35   40.0    0.0   334.00    23.38    83.50   227.12


Statistics (Wage Hours OT Gross StateTax FedTax NetPay)
Totals:      51.45   215.50    18.50  2329.84   123.18   582.46  1624.19 
Averages:    10.29    43.10     3.70   465.97    24.64   116.49   324.84 
Minimum:      8.35    37.00     0.00   334.00     0.00    83.50   227.12 
Maximum:     12.25    51.00    11.00   598.90    46.55   149.73   419.23