#include <stdio.h>
#define INIT_WAGES 600000.0
#define
INCREASE_WAGES 50000.0
#define
EXTRA_PAY_PER_HOUR 5000.0
#define
EXTRA_PAY_RATE_FOR_DANGER_JOB 0.30
#define FAMILY_ALLOWANCE_PER_ONE 50000.0
#define TRAVEL_COST 100000.0
#define FOOD_EXPENSES 100000.0
main()
{
int normal_condition; /* 정상 상태 여부
*/
int flag;
int years; /*
경력 */
int extra_hours; /*
시간외 근무 시간 */
int is_danger_job; /*
위험 수당 받는 일인지 여부 */
int nu_of_family; /*
가족 수 */
double main_salary; /* 본봉
*/
double extra_pay; /*
시간외 근무수당 */
double extra_pay_for_danger; /* 위험 수당 */
double family_allowance; /* 가족수당 */
double total_salary; /* 급여총액
*/
/*
프로그램 설명 */
printf("급여를
계산하는 프로그램입니다.\n");
/*
경력, 가족수, 시간외 근무시간, 일의 성격 입력 */
normal_condition
= 1;
printf("입사한지
몇년이 경과했습니까?(첫해는 0) : ");
flag
= scanf("%d", &years);
while ((flag == 1)
&& (years < 0)) {
printf("0보다
작은 값은 허용되지 않습니다. 다시 입력 : ");
flag
= scanf("%d", &years);
}
if
(flag != 1) {
normal_condition
= 0;
}
if
(normal_condition) {
printf("시간외
근무한 시간을 입력하세요 : ");
flag
= scanf("%d", &extra_hours);
while
((flag == 1) && (extra_hours < 0)) {
printf("0보다
작은 값은 허용되지 않습니다. 다시 입력 : ");
flag
= scanf("%d", &extra_hours);
}
if
(flag != 1) {
normal_condition
= 0;
}
}
if
(normal_condition) {
printf("위험
수당을 받지 않는 경우는 0, 받는 경우에는 그외 번호를 입력하세요 : ");
flag
= scanf("%d", &is_danger_job);
if
(flag != 1) {
normal_condition
= 0;
}
}
if
(normal_condition) {
printf("본인을
제외한 부양 가족 수를 입력하세요 : ");
flag
= scanf("%d", &nu_of_family);
while
((flag == 1) && (nu_of_family < 0)) {
printf("0보다
작은 값은 허용되지 않습니다. 다시 입력 : ");
flag
= scanf("%d", &nu_of_family);
}
if
(flag != 1) {
normal_condition
= 0;
}
}
/* 월급
계산 */
if
(normal_condition) {
main_salary
= INIT_WAGES + years * INCREASE_WAGES;
extra_pay
= extra_hours * EXTRA_PAY_PER_HOUR;
extra_pay_for_danger
= 0;
if
(is_danger_job) {
extra_pay_for_danger
= (main_salary + extra_pay) * EXTRA_PAY_RATE_FOR_DANGER_JOB;
}
family_allowance
= nu_of_family * FAMILY_ALLOWANCE_PER_ONE;
total_salary
= main_salary
+
extra_pay + extra_pay_for_danger + family_allowance
+
TRAVEL_COST + FOOD_EXPENSES;
}
/* 결과
출력 */
if
(normal_condition) {
printf("%10.0f
%10.0f %10.0f %10.0f %10.0f\n",
main_salary,
extra_pay, extra_pay_for_danger,
family_allowance,
total_salary);
}
else
{ /* 오류 상황 */
printf("Error\n");
}
}