//*******************************************************
//
// Assignment 3 - Conditionals
//
// Name: <Kyle Merrihew>
//
// Class: C Programming, <Spring 2025>
//
// Date: <14 February 2025>
//
// Description: Program which determines overtime and 
// gross pay for a set of employees with outputs sent 
// to standard output (the screen).
//
//********************************************************

#include <stdio.h>

// Declare constants 
#define STD_HOURS 40.0
#define NUM_EMPLOYEES 5
#define OVERTIME_MULTIPLIER 1.5  // Added constant for overtime multiplier

int main() {
    
    int clockNumber;       // Employee clock number
    float grossPay;        // The weekly gross pay which is the normalPay + any overtimePay
    float hours;           // Total hours worked in a week
    float normalPay;       // Standard weekly normal pay without overtime 
    float overtimeHrs;     // Any hours worked past the normal scheduled work week
    float overtimePay;     // Additional overtime pay for any overtime hours worked
    float wageRate;        // Hourly wage for an employee

    printf ("\n*** Pay Calculator ***");
    
    // Process each employee
    for (int i = 0; i < NUM_EMPLOYEES; i++) {
        
        // Prompt the user for the clock number
        printf("\n\nEnter clock number: ");
        scanf("%d", &clockNumber);

        // Prompt the user for the wage rate
        printf("\nEnter wage rate: ");
        scanf("%f", &wageRate);

        // Prompt the user for the number of hours worked
        printf("\nEnter number of hours worked: ");
        scanf("%f", &hours);
        
        // Initialize values
        grossPay = 0;
        overtimeHrs = 0;
        overtimePay = 0;
        
        // Calculate the overtime hours, normal pay, and overtime pay
        if (hours > STD_HOURS) {
            // Calculate overtime hours
            overtimeHrs = hours - STD_HOURS;

            // Calculate normal pay for the first 40 hours
            normalPay = STD_HOURS * wageRate;

            // Calculate overtime pay
            overtimePay = overtimeHrs * wageRate * OVERTIME_MULTIPLIER;
        } else {
            // If no overtime, just calculate normal pay
            normalPay = hours * wageRate;
        }

        // Calculate the gross pay with normal pay and any additional overtime pay
        grossPay = normalPay + overtimePay;

        // Print out information on the current employee
        printf("\n\nClock# Wage  Hours  OT      Gross\n");
        printf("------------------------------------------------\n");
        printf("%06d %5.2f %5.1f %5.1f %8.2f\n", 
                clockNumber, wageRate, hours, overtimeHrs, grossPay);
    }
    
    return 0;
}