본문 바로가기
c언어

c언어 조건문(if문, 중첩된 if문, switch문) 이용하여 문제 해결하기(계산기 만들기(if문 이용), 이차방정식 풀기, 계산기 만들기(switch문 이용), 삼각형 형성 조건 구별하기)

by 개발자 L 2022. 12. 4.
반응형

c언어 조건문(if문, 중첩된 if문, switch문) 이용하여 문제 해결하기(계산기 만들기(if문 이용), 이차방정식 풀기, 계산기 만들기(switch문 이용), 삼각형 형성 조건 구별하기)

네 안녕하세요, 이번 포스팅에서는 c언어 조건문을 이용하여 문제를 직접 풀어보면서 코딩 실력을 향상해보는 시간을 가져보려 합니다.

조건문부터는 실제 프로그램을 만들 때 많이 사용하는 문법이기 때문에 지금 이 시점부터 프로그램을 본격적으로 만들 준비를 하고 있다고 해도 과언이 아닙니다.

그럼 지금부터 함께 보시죠.

 

1. 계산기 만들기(if문 이용)

if문을 이용하여 계산기를 만들어보겠습니다.

우리가 수식을 입력을 하면 그것을 직접 계산을 해주는 프로그램을 만들 겁니다.

사용할 연산은 기본 산술 연산입니다.

그럼 지금부터 예제를 작성해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int x, y, result;
    char op;

    printf("수식을 입력하세요(ex : 1 + 2) : \n");
    printf(">>");
    scanf("%d %c %d", &x, &op, &y);

    if(op == '+')
    {
        result = x + y;
    }

    else if(op == '-')
    {
        result = x - y;
    }

    else if(op == '*')
    {
        result = x * y;
    }

    else if(op == '/')
    {
        result = x / y;
    }

    else if(op == '%')
    {
        result = x % y;
    }

    else
    {
        printf("지원되지 않는 연산자입니다.\n");
    }

    printf("%d %c %d = %d\n", x, op, y, result);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

이렇게 하게 되면 수식을 한 번에 입력하여 계산을 진행하게 됩니다.

그럼 결과를 한 번 보도록 하겠습니다.

먼저 더하기 연산입니다.

수식을 입력하세요(ex : 1 + 2) :
>>2 + 5
2 + 5 = 7

그리고 뺄셈 연산입니다.

수식을 입력하세요(ex : 1 + 2) :
>>3 - 1
3 - 1 = 2

곱셈 연산입니다.

수식을 입력하세요(ex : 1 + 2) :
>>4 * 5
4 * 5 = 20

나눗셈 연산입니다.

수식을 입력하세요(ex : 1 + 2) :
>>5 / 2
5 / 2 = 2

나머지 연산입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>6 % 2
6 % 2 = 0

마지막으로 기타 연산자를 입력했을 경우입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>5 ^ 2
지원되지 않는 연산자입니다.

이렇게 정상적으로 작동이 됨을 볼 수가 있습니다.

 

2. 이차방정식 계산하기

c언어의 조건문을 이용하면 이차방정식도 계산할 수 있습니다.

그리고 이러한 고등수학 연산을 할 때는 c언어 라이브러리를 추가로 하나 더 끌어와야 합니다.

<math.h>라는 라이브러리가 바로 그에 해당합니다.

그럼 이를 이용하여 한 번 예제를 작성해보도록 하겠습니다.

#include <stdio.h>
#include <math.h>

int main()

{
    double a, b, c, dis;

    printf("계수 a, 계수 b, 계수 c를 순서대로 입력하세요 : ");
    scanf("%lf %lf %lf", &a, &b, &c, &dis);
    
    if(a == 0)
    {
        printf("방정식의 근은 %f입니다.", -c / b);
    }

    else
    {
        dis = b * b - 4.0 * a * c;

        if(dis >= 0)
        {
            printf("방정식의 근은 %f입니다\n", (-b + sqrt(dis)) / (2.0 * a));
            printf("방정식의 근은 %f입니다\n", (-b - sqrt(dis)) / (2.0 * a));
        }

        else
        {
            printf("실근이 존재하지 않습니다.\n");
        }
    }

    return 0;
}

이렇게 작성을 해봤습니다.

여기에서는 총 3가지의 경우가 나옵니다.

  • 최고차항의 계수가 0인 경우(일차방정식의 해 구하기)
  • 최고차항의 계수가 0이 아닌 경우(근의 공식 사용)
  • 실근이 존재하지 않는 경우

그래서 이걸 다시 수학적으로 설명을 드리자면

근이 1개인 경우, 근이 2개인 경우, 근이 존재하지 않는 경우를 말씀드릴 수 있습니다.

그래서 위의 경우는 최고차항의 계수인 a가 0이 되기 때문에 교점이 하나가 생겨서 해가 한 개가 나오고,

두 번째 경우는 최고차항 a의 계수가 0이 아니기 때문에 판별식을 써서 해를 구해야 합니다.

그리고 그 판별식을 근의 공식을 이용하여 구하는데,

그게 0 이상이라 하면 해는 양수 해와 음수 해가 각각 하나씩 존재하여 두 개가 존재하게 됩니다.

그 이유는 이차방정식의 그래프의 모양은 포물선이기 때문입니다.

그리고 마지막 경우는 판별식이 0보다 작은 경우입니다.

그렇게 된다면 해는 존재하지 않게 됩니다.

그럼 각각의 결과를 한 번 살펴봅시다.

먼저 최고차항의 계수가 0이거나, 판별식이 0이 될 경우입니다.

계수 a, 계수 b, 계수 c를 순서대로 입력하세요 : 0 1 2
방정식의 근은 -2.000000입니다.

이어서 판별식이 0 이상일 경우입니다.

계수 a, 계수 b, 계수 c를 순서대로 입력하세요 : 1 2 -8
방정식의 근은 2.000000입니다
방정식의 근은 -4.000000입니다

마지막으로 판별식이 0보다 작을 때입니다.

계수 a, 계수 b, 계수 c를 순서대로 입력하세요 : 1 2 3
실근이 존재하지 않습니다.

이렇게 나올 수 있습니다.

그리고 여기 보시면 sqrt()라는 함수로 캐스팅을 해줬는데,

이는 <math.h> 라이브러리에서 제공하는 수학 관련 함수입니다.

sqrt는 제곱근과 같은 실수해를 구할 때 사용을 합니다.

그리고 서로 다른 두 개의 실근이 정수로 떨어진다는 보장이 없기 때문에 이를 붙였습니다.

반응형

 

3. 계산기 만들기(switch문 이용)

switch문을 이용하여 계산기를 만들 수도 있습니다.

switch문을 이용을 하게 되어도 if문을 사용하는 것과 형태는 비슷하게 나옵니다.

그럼 바로 코드를 작성해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int x, y, result;
    char op;

    printf("수식을 입력하세요(ex : 1 + 2) : \n");
    printf(">>");
    scanf("%d %c %d", &x, &op, &y);

    switch(op)
    {
        case '+':
        result = x + y;
        break;

        case '-':
        result = x - y;
        break;

        case '*':
        result = x * y;
        break;

        case '/':
        result = x / y;
        break;

        case '%':
        result = x % y;
        break;

        default:
        printf("지원되지 않는 연산자입니다.\n");
        break;
    }

    printf("%d %c %d = %d\n", x, op, y, result);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그러면 결과도 if문을 썼을 때와 똑같이 나오는지 한 번 봅시다.

먼저 덧셈입니다.

수식을 입력하세요(ex : 1 + 2) :
>>2 + 3
2 + 3 = 5

뺄셈입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>3 - 1
3 - 1 = 2

곱셈입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>5 * 3
5 * 3 = 15

나눗셈입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>4 / 5
4 / 5 = 0

나머지 연산입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>6 % 2
6 % 2 = 0

기타 연산자 입력 시 결과 화면입니다.

수식을 입력하세요(ex : 1 + 2) : 
>>5 & 6
지원되지 않는 연산자입니다.

이렇게 잘 나오는 것을 볼 수가 있습니다.

 

4. 삼각형의 형성 조건 구별하기

조건문을 이용을 하게 되면 삼각형의 형성 조건을 파악하여 삼각형의 생성 여부도 판단이 가능합니다.

그 이유는 삼각형의 형성 조건을 조건식으로 표현이 가능하기 때문입니다.

삼각형의 형성 조건을 글로 풀어내면 이렇습니다.

두 변의 길이의 합이 나머지 한 변의 길이보다 크다.

그래서 연속되는 and 연산으로 이것을 만들 수가 있습니다.

그럼 한 번 작성을 해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int a, b, c;

    printf("삼각형의 세 변의 길이를 입력하세요 : ");
    scanf("%d %d %d", &a, &b, &c);

    if((a + b) > c && (b + c) > a && (a + c) > b)
    {
        printf("삼각형이 맞습니다.");
    }

    else
    {
        printf("삼각형이 아닙니다.");
    }

    return 0;
}

이렇게 조건식을 써서 작성을 했습니다.

조건식이 생각보다 간단합니다.

그럼 결과도 한 번 봅시다.

먼저 삼각형이 형성이 되는 경우입니다.

삼각형의 세 변의 길이를 입력하세요 : 7 8 3
삼각형이 맞습니다.

그리고 삼각형이 형성이 되지 않는 경우입니다.

삼각형의 세 변의 길이를 입력하세요 : 1 2 3
삼각형이 아닙니다.

이렇게 잘 나오는 것을 볼 수가 있습니다.

이제 여러분들은 조건문을 자유자재로 쓸 수 있는 능력이 생겼습니다.

 

여기까지 조건문을 이용하여 여러 가지 문제를 해결하며 코딩 실력을 기르는 시간을 가졌습니다.

다음 포스팅부터는 반복문에 대해서 알아보는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 감사드립니다 ~

반응형

댓글