C언어 기초: 최대값, 중간값, 최소값 구하기

kevinkim2586·2020년 4월 19일
0

C언어

목록 보기
16/23
post-thumbnail

이번 문제는 조금 간단한 문제다. 정수 3개를 입력 받고, 3개의 정수 중에서 min 값, max 값, 그리고 middle 값을 구하면 된다. 다만 이를 함수로만 따로따로 구현하기만 하면 된다.

출력 예제를 보면 아래와 같다.

15, 25, 17이 입력으로 들어오면, 셋 중에서 최대값인 25가 처음에, 그리고 가장 작은 값이 두 번째에, 그리고 중간값이 맨 마지막에 나와야 한다.

손코딩을 보자.

각 함수를 따로 구현해야 해서 조금 번거롭기는 했지만, 모듈화를 최대한 시켜놔야 나중에 사용ㄹ하기도 편하니, 3개의 다른 함수를 만들었다.

아래는 최종 코드다:

#include <stdio.h>


int max(int a, int b, int c);
int min(int a, int b, int c);
int middle(int a, int b, int c);


int main(void){
    
    int a, b, c;
    
    while(1){
        scanf("%d %d %d", &a, &b, &c);
        if(a==0 && b==0 && c==0)
        break;
        printf("%d ", max(a, b, c));
        printf("%d ", min(a, b, c));
        printf("%d", middle(a, b, c));
        printf("\n");

    }
    
    return 0;
}


int max(int a, int b, int c){
    
    int maxNum=a;
    
    if(maxNum<b || maxNum<c){
        maxNum=b;
        if(maxNum<c){
            maxNum=c;
            return maxNum;
        }
        else{
            return maxNum;
        }
    }
    else{
        return maxNum;
    }
}

int min(int a, int b, int c){
    
    int minNum=a;
    
    if(minNum>b || minNum>c){
        minNum=b;
        if(minNum>c){
            minNum=c;
            return minNum;
        }
        else{
            return minNum;
        }
    }
    else{
        return minNum;
    }
    
}

int middle(int a, int b, int c){
    
    int maxNum=max(a,b,c);
    int minNum=min(a,b,c);
    int sum=a+b+c;
    int result=sum-maxNum-minNum;
    return result;
    
}

겨우 최대값, 최소값, 중간값을 구하는 코드인데 생각보다 코드가 길가는 생각을 지울 수가 없다. 조금 더 효율적인 방법이 있으면 누가 알려주기 바란다.

profile
공개적으로 학습하고자 만든 블로그

0개의 댓글