절대값의 크기에 따라 오름차순으로 정렬하여 출력하는 프로그램

조회수 1274회
#include <stdio.h>
#include <stdlib.h>

void sortAbs(int* a, int* b, int* c);

int main()
{
    int i;
    int a, b, c = 0;
    printf("세개의 정수를 입력하세요: ");
    scanf_s("%d", &a);
    scanf_s("%d", &b);
    scanf_s("%d", &c);

    sortAbs(a, b, c);

    printf("%d %d %d", a, b, c);

    return 0;
}

void sortAbs(int* a, int* b, int* c)
{
    int * d, * e, * f;

    d = abs(a);
    e = abs(b);
    f = abs(c);

    if (*(d) > *(e))
    {
        f = *d;
        *d = *e;
        *e = f;
    }

}

여기서 왜 실행이 안되는지 궁금합니다 -4 2 9 을 입력하면 2 -4 9이 출력이 되어야 하는 코드입니다

1 답변

  • #include <stdio.h>
    #include <stdlib.h>
    void sortAbs(int* a, int* b, int* c);
    int main()
    {
        int a, b, c;
        printf("세개의 정수를 입력하세요: ");
        scanf_s("%d", &a);
        scanf_s("%d", &b);
        scanf_s("%d", &c);
    
        sortAbs(&a, &b, &c);
    
        printf("%d %d %d", a, b, c);
    
        return 0;
    }
    void sortAbs(int* a, int* b, int* c){
        int tmp;
        if (abs (*a) < abs(*b)) {
            tmp = *a;
            *a = *b;
            *b = tmp;
        }
        if (abs (*a) < abs(*c)) {
            tmp = *a;
            *a = *c;
            *c = tmp;
        }
        if (abs (*b) < abs(*c)) {
            tmp = *b;
            *b = *c;
            *c = tmp;
        }
    }
    

    sortAbs함수에 숫자를 넘겨주는 방법과 함수 안의 정렬하는 횟수를 수정했습니다.

    정렬하는 숫자가 많아지면 정렬 종류 중에 하나를 사용하셔서 코드를 짜보시면 될 것 같습니다. 인터넷에 쳐보시면 버블정렬이라던가 쭉 있습니다.

    포인터는 사용하는 방법에 관해 다시 한번 읽어보시면 좋을 것 같습니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)