컴퓨터를 공부하고자 마음먹은지 N일차

[15일차](홍정모의따배c)다중선택 else if 본문

🖥C

[15일차](홍정모의따배c)다중선택 else if

졸린새 2020. 9. 22. 22:21
728x90

[15일차](홍정모의따배c)다중선택 else if

*본 강의수기는 교수님의 모든 ppt나 코드 화면을 붙인게 아닙니다. 따로 출처 표시나 과제표시

안한 모든 코드와 사진자료의 출처는 본 강의의 교수님 입니다.

정리는 다시한번 제가 보기위함과 어떤강의인지 알려드리는 것이고

제가 적은건 이해를 돕기 위한 부연설명과 제가 이해한 몇개의 중심적인 내용이 다소

생략이 되었습니다. 이 수기를 통해 공부하려 하지말고 흥미로운 내용이라면

'인프런- 홍정모의 따라하며 배우는c' 과정을 수강하시길 바랍니다.

  • 문제

각 연봉별 세율을 구하고 세후 금액을 구하라

  • 힌트1

나도 42퍼떼일날이 오려나

  • 힌트2

예제코드에 코드를 추가해서 구하면 된다.

  • 내코드
#include <stdio.h>

#define BASE1 12000000.0
#define BASE2 46000000.0
#define BASE3 88000000.0
#define BASE4 150000000.0
#define BASE5 300000000.0
#define BASE6 500000000.0

#define RATE1 (6.0 / 100.0)
#define RATE2 (15.0 / 100.0)
#define RATE3 (24.0 / 100.0)
#define RATE4 (35.0 / 100.0)
#define RATE5 (38.0 / 100.0)
#define RATE6 (40.0 / 100.0)
#define RATE7 (42.0 / 100.0)

#define BASIC_DEDUCTION 1500000.0

int main()
{
    double income = 0.0;
    double tax = 0.0;
    
    scanf("%lf", &income);
    income -= BASIC_DEDUCTION;
    
    if (income <= BASE1)
    {
        tax = income * RATE1;
    }
    else if (income <= BASE2)
    {
        tax = BASE1 * RATE1 + (income - BASE1) * RATE2;
    }
    else if (income <= BASE3)
    {
        tax = BASE1 * RATE1 + BASE2 * RATE2 + (income - BASE2) * RATE3;
    }
    else if (income <= BASE4)
    {
        tax = BASE1 * RATE1 + BASE2 * RATE2 + BASE3 * RATE3 + (income - BASE3) * RATE4;
    }
    else if (income <= BASE5)
    {
        tax = BASE1 * RATE1 + BASE2 * RATE2 + BASE3 * RATE3 + BASE4 * RATE4 + (income - BASE4) * RATE5;
    }
    else if (income <= BASE6)
    {
        tax = BASE1 * RATE1 + BASE2 * RATE2 + BASE3 * RATE3 + BASE4 * RATE4 + BASE5 * RATE5 + (income - BASE5) * RATE6;
    }
    else if (income >= BASE6)
    {
        tax = BASE1 * RATE1 + BASE2 * RATE2 + BASE3 * RATE3 + BASE4 * RATE4 + BASE5 * RATE5 + BASE6 * RATE7 + (income - BASE6) * RATE7;
    }
    
    printf("Tax is = %f\n", tax);
    printf("Your income after tax deduction = %f", income - tax);
    
    
    return 0;
}

아무래도 계산이 틀린것 같다

어떻게 잘못 계산한듯 하다

  • 교수님코드
else if (income <= BASE3)
    {
        tax = BASE1 * RATE1 + (BASE2 - BASE1) * RATE2 + (income - BASE2) * RATE3;
    }
    else if (income <= BASE4)
    {
        tax = BASE1 * RATE1 + (BASE2 - BASE1) * RATE2 + (BASE3 - BASE2) * RATE3 + (income - BASE3) * RATE4;
    }
    else if (income <= BASE5)
    {
        tax = BASE1 * RATE1 + (BASE2 - BASE1) * RATE2 + (BASE3 - BASE2) * RATE3 + (BASE4 - BASE3) * RATE4 + (income - BASE4) * RATE5;
    }
    else if (income <= BASE6)
    {
        tax = BASE1 * RATE1 + (BASE2 - BASE1) * RATE2 + (BASE3 - BASE2) * RATE3 + (BASE4 - BASE3) * RATE4 + (BASE5 - BASE4) * RATE5 + (income - BASE5) * RATE6;
    }
    else
    {
        tax = BASE1 * RATE1 + (BASE2 - BASE1) * RATE2 + (BASE3 - BASE2) * RATE3 + (BASE4 - BASE3) * RATE4 + (BASE5 - BASE4) * RATE5 + (BASE6 - BASE5) * RATE6 + (income - BASE6) * RATE7;
    }

마지막은 더이상 복잡한구조가 없기에

else로 바꿔도 된다.

-틀린이유

2 구간이후에도 차감된만큼 세액을 증가시켜야 했는데

내생각이 짧았다

그렇다면 재미로 꿈의 연봉 세후 1억이 되려면 내연봉이 얼마여야 할까

열심히 살아야겠다

Comments