택시 요금 할증입니다.
최초 1000m 기본 요금
다음 2000m까지는 기본요금 + 1000m 초과거리 100m당 300원,
다음 3000m까지는 2000m 요금에 2000m초과거리 100m당 400원,
3000m 초과시 3000m 요금 + (총 거리 - 3000m 에서 남은 거리에 100m 당 500원)
2가지 방법으로 작성하였습니다.
aaa.c
#include <stdio.h>
#define BASIC 2800
#define EXTRA1 300
#define EXTRA2 400
#define EXTRA3 500
main()
{
int fee, om, m;
printf("주행거리를 입력하세요(m) :");
scanf("%d", &om);
printf("\n주행거리 : %d m\n\n", om);
/*---------------- 구간별 적용 1 -----------------------*/
printf("구간별 누진 적용 :");
m = om;
// 1000m
fee = BASIC;
m -= 1000;
// 2000m
if (m >= 100) {
if (m > 1000) {
fee += 10 * EXTRA1;
m -= 1000;
}
else {
fee += (int)(m / 100) * EXTRA1;
m -= 1000;
}
}
// 3000m
if (m >= 100) {
if (m > 1000) {
fee += 10 * EXTRA2;
m -= 1000;
}
else {
fee += (int)(m / 100) * EXTRA2;
m -= 1000;
}
}
// 3000m over
if (m >= 100) fee += (int)(m / 100) * EXTRA3;
printf(" 요금 : %d \n", fee);
/*---------------- 구간별 적용 2 -----------------------*/
printf("구간별 누진 적용 :");
m = om;
// 1000m
if (m < 1099) fee = BASIC;
// 2000m
else if (m < 2099) fee = (int)((m-1000)/100) * EXTRA1 + BASIC;
// 3000m
else if (m < 3099) fee = (int)((m-2000)/100) * EXTRA2 + 10 * EXTRA1 + BASIC;
// 3000m over
else fee = (int)((m-3000)/100) * EXTRA3 + 10 * EXTRA2 + 10* EXTRA1 + BASIC;
printf(" 요금 : %d \n", fee);
}