Я совершенно новичок в C, так что прости, как новичок в этом вопросе ... Мне все еще немного неясно, как вызывать функцию. Мне нужно написать функцию с именем process_time_cards (), которая обрабатывает еженедельные карты времени для сотрудников компании. Вам необходимо ввести идентификатор, отработанные часы и почасовую ставку. Кроме того, мы должны заплатить полтора раза за все часы, отработанные свыше тридцати. Наконец, мы должны вычесть 30% для федеральных налогов и 10% для государственных налогов из валовой заработной платы. Ниже приведен код, который у меня есть, и я действительно заблудился, как его исправить. Если я введу 20 долларов / час и 50 часов, получится 1300,00 брутто и 700,00 net. Предполагается выйти на 1100 брутто и 660,00 net. Пожалуйста, дайте мне знать, что я делаю неправильно!
//Lesson 9 Assignment - Salary Lab
//** STEPWISE REFINEMENT **
// 0 - Header files and constant macro values
#include // printf(), scanf(), puts()
#define SENTINEL -1 // sentinel value
#define FED_TAX 0.30 // federal tax
#define STATE_TAX 0.10 // state tax
#define MIN_HOURS 0.00 // min amount of hours
#define MAX_HOURS 40.00 // maximum hours before we implement overtime
// 1 - Display title of lab
void display_title() {
puts("Salary Lab");
}
// 2 - Create a function that processes weekly time cards for all employees
// 2.1 - Inputs = ID#, hourly pay, no. of hours worked
void process_time_cards() {
// 2.1.1 Declare variables and types
int id; // Input - user provides identification number
double hourly_pay; // Input - hourly pay
double overtime; // (hours_worked - MAX_HOURS)
double hours_worked; // Input - hours worked
double gross_pay; // hourly pay * hours worked (BEFORE TAXES)
double net_pay; // federal and state tax subtracted from gross pay
double overtime_rate; // hourly_pay + (hourly_pay / 2)
double federal_tax;
double state_taxes;
double overtime_total; // product of ot hours worked and ot rate
double overtime_gross;
double overtime_net;
double straight_gross;
double straight_net;
// 3- Prompt for Information
// 3.1 - Prompt Employee ID
// 3.1.1 - Set conditions for Employee ID
// 3.1.1.1 - While true, enter ID
while (1) {
printf("Enter Employee ID (or %d to exit): ", SENTINEL);
scanf("%d", &id);
// 3.1.1.2 - nested if - if id == sentinel value, break the loop
if (id == SENTINEL) {
printf("All done.\n");
break;
}
// 3.2 - Employee Hours Worked for the week
printf("Enter Hours Worked: ");
scanf("%lf", &hours_worked);
// define overtime
overtime = hours_worked - MAX_HOURS;
// 3.2 - Employee Hourly Wage
printf("Enter Hourly Wage: ");
scanf("%lf", &hourly_pay);
//3.2.1 - Calculate gross and net pay
gross_pay = hourly_pay * hours_worked;
federal_tax = gross_pay * FED_TAX;
state_taxes = gross_pay * STATE_TAX;
net_pay = gross_pay - federal_tax - state_taxes;
// 6 - Calculate Overtime
// 6.1 - Calculate
// 6.1.1 Calculates straight gross and net payments if hours worked is under 40
while (hours_worked MAX_HOURS) {
overtime_rate = hourly_pay * 1.5;
overtime_gross = overtime * overtime_rate;
overtime_net = overtime_gross - federal_tax - state_taxes;
break;
}
gross_pay = straight_gross + overtime_gross;
net_pay = straight_net + overtime_net;
}
/// ^ This value also works
/// We just need to add them...
printf("ID- Gross Pay- Net10-\n");
printf("%d- %.2lf- %.2lf-\n", id, gross_pay, net_pay);
break;
}
}
// Display Information to user through main function
int main() {
display_title();
process_time_cards();
return 0;
}