c 질문이요! 배열을 막 공부하고 있는데.. 이 코드를 좀더 간결하게 가능할까요?

조회수 413회
#include <stdio.h>

int main(void) {
    int aList[5];
    int i = 0, nMin = 0, nMax = 0;

    printf("Please input five numbers: ");
    do {
        scanf("%d", &aList[i]);
        if(i==0) nMin = aList[0]; nMax = aList[0];
        if(nMin > aList[i]) nMin = aList[i];
        if(nMax < aList[i]) nMax = aList[i];
        i++;
    } while(i < 5);

    printf("MIN: %d, MAX: %d\n", nMin, nMax);
}

5개의 정수를 입력받고 그중 최솟값과 최댓값을 출력하는 코드를 연습으로 만들어봤는데요..

좀더 간결하게 만들수 있을거같은데 떠오르지가 않아요.. 혹시 더 간결하게 만든다면 어떻게 일까요?!?!

입력 예:

1 5 2 4 3

출력 예 :

MIN: 1, MAX: 5

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 아래 코드 참고하세요.

    • 코드
    #define _CRT_SECURE_NO_WARNINGS
    
    #include <stdio.h>
    #include <limits.h>
    
    int main(void) {
        int aList[5];
        int i = 0, nMin = INT_MAX, nMax = INT_MIN;
    
        printf("Please input five numbers: ");
    
        for (int i = 0; i < 5; i++)
        {
            scanf("%d", &aList[i]);
    
            if (nMin > aList[i])
                nMin = aList[i];
            if (nMax < aList[i])
                nMax = aList[i];
        }
    
        printf("MIN: %d, MAX: %d\n", nMin, nMax);
    }
    
    • 결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 이런 방법이 있었네요!! INT_MIN, INT_MAX가 있다는것도 처음 알았어요! 감사해요! 알 수 없는 사용자 2020.8.29 16:34
  • if(i==0) nMin = aList[0]; nMax = aList[0];

    이 부분은 블록으로 묶여있지 않아서 정상동작하지 않습니다. 아래와 같이 블록으로 묶어주시기 바랍니다.

    if(i==0) {
        nMin = aList[0];
        nMax = aList[0];
    };
    

    간결(?)하게 수정한 코드는 아래와 같습니다.

    #include <stdio.h>
    
    int main(void) {
        int aList[5] = {1,5,2,4,3};
        int nMin = 0, nMax = 0;
    
        //printf("Please input five numbers: ");
        for(int i=0;i<5;i++){
            int inputValue;
            //scanf("%d", &inputValue);
            inputValue = aList[i];
            nMin = nMin>inputValue|!i?inputValue:nMin;
            nMax = nMax<inputValue|!i?inputValue:nMax;
        }
        printf("MIN: %d, MAX: %d\n", nMin, nMax);
    }
    

    비트연산자와 삼항연산자를 사용하였습니다.

    감사합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)