문제 상황
어느 노트북 제조 회사는 판매원들에게 다음과 같은 월별 급여 지급 정책을 적용하고 있습니다.
기본 최저 급여: 3,000.00
판매 보너스: 노트북 한 대당 200.00
커미션: 월간 총 판매액의 5%
노트북의 가격은 시장 상황에 따라 달라지기 때문에, 각 제품의 판매 가격은 매월 초에 고정됩니다.
해결 방법
보너스와 커미션을 계산하는 핵심 로직은 다음과 같습니다.
bonus = BONUS_RATE * quantity;
commission = COMMISSION * quantity * price;
총 급여(세전 급여)는 아래 공식을 이용해 구할 수 있습니다.
총 급여 = 기본급 + (판매 수량 × 보너스 단가)
+ (판매 수량 × 판매 가격) × 커미션 율
예제 코드
다음은 매크로 함수(#define)를 활용하여 판매원의 급여를 계산하는 C 프로그램입니다.
#define BASIC_SALARY 3000.00
#define BONUS_RATE 200.00
#define COMMISSION 0.05
main(){
int quantity;
float gross_salary, price;
float bonus, commission;
printf("number of items sold and their price\n");
scanf("%d %f", &quantity, &price);
bonus = BONUS_RATE * quantity;
commission = COMMISSION * quantity * price;
gross_salary = BASIC_SALARY + bonus + commission;
printf("\n");
printf("Bonus = %6.2f\n", bonus);
printf("Commission = %6.2f\n", commission);
printf("Gross salary = %6.2f\n", gross_salary);
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Number of items sold and their price
20 150000
Bonus = 4000.00
Commission = 150000.00
Gross salary = 157000.00
코드 설명
이 프로그램에서 #define 지시문은 BASIC_SALARY(기본급), BONUS_RATE(보너스 단가), COMMISSION(커미션 율)이라는 세 개의 상수를 정의하는 데 사용됩니다. 매크로를 활용하면 급여 정책이 변경될 때 코드 본문을 수정하지 않고도 상숫값만 바꾸면 되므로 유지보수가 훨씬 편리해집니다.
사용자가 판매 수량과 판매 가격을 입력하면, 프로그램은 보너스와 커미션을 각각 계산한 뒤 기본급에 더해 최종 총 급여를 산출합니다. 위 실행 예시에서는 20대를 대당 150,000원(가정)에 판매하여 보너스 4,000.00, 커미션 150,000.00이 지급되고, 총 급여는 157,000.00이 됩니다.