c언어 절대값 정렬 질문입니다!!
조회수 539회
#define _crt_secure_no_warnings
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void sortAbs(int* a, int* b, int* c);
int main()
{
int *a, *b, *c;
int max, mid, min;
printf("3개의 정수를 입력해:");
scanf("%d,%d,%d", &a,&b,&c);
sortAbs(&a, &b, &c);
printf("%d,%d,%d", min, mid, max);
}
void sortAbs(int *a, int *b, int *c)
{
int tmp;
int max, mid, min;
if (abs(*a) >= abs(*b) && abs(*a) >= abs(*c))
{
max = *a;
if (abs(*b) >= abs(*c))
{
mid = *b;
min = *c;
}
else if(abs(*c) >= abs(*b))
{
mid = *c;
min = *b;
}
}
if (abs(*b) >= abs(*a) && abs(*b) >= abs(*c))
{
max = *b;
if (abs(*a) >= abs(*c))
{
mid = *a;
min = *c;
}
else if(abs(*c)>= abs(*a))
{
mid = *c;
min = *a;
}
}
if (abs(*c) >= abs(*a) && abs(*c) >= abs(*b))
{
max = *c;
if (abs(*b) >= abs(*a))
{
mid = *b;
min = *a;
}
else if(abs(*c)>= abs(*b))
{
mid = *c;
min = *b;
}
}
return 0;
}
-2 5 2 입력시 -> -2 2 5
-3 -6 4 입력시 -> -3 4 -6
이런식으로 짜봤는데 입력시 오류가 나옵니다 어디가 잘못되었나요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
여러곳이 틀려서 일일이 설명을 드릴수 없다는 점 양해해 주세요.
아래에 수정한 코드와 결과가 있습니다. 꼼꼼히 차이점을 확인해 보세요.
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> void sortAbs(int* a, int* b, int* c); int main() { int a, b, c; //int max, mid, min; printf("3개의 정수를 입력해:"); scanf("%d %d %d", &a, &b, &c); sortAbs(&a, &b, &c); printf("%d,%d,%d", a, b, c); } void sortAbs(int* a, int* b, int* c) { //int tmp; int max, mid, min; if (abs(*a) >= abs(*b) && abs(*a) >= abs(*c)) { max = *a; if (abs(*b) >= abs(*c)) { mid = *b; min = *c; } else if (abs(*c) >= abs(*b)) { mid = *c; min = *b; } } else if (abs(*b) >= abs(*a) && abs(*b) >= abs(*c)) { max = *b; if (abs(*a) >= abs(*c)) { mid = *a; min = *c; } else if (abs(*c) >= abs(*a)) { mid = *c; min = *a; } } else if (abs(*c) >= abs(*a) && abs(*c) >= abs(*b)) { max = *c; if (abs(*b) >= abs(*a)) { mid = *b; min = *a; } else if (abs(*c) >= abs(*b)) { mid = *c; min = *b; } } *a = min; *b = mid; *c = max; //return 0; }
- 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
- 이제 실행은 될텐데요. 조건문에서 절대값을 취한 상태로 크기를 비교하고 있기 때문에, 절대 값이 같고 부호가 다른 값이 입력될 경우 의도와 다르게 정렬될 수 있습니다. 그것까지 하시려면 지금 코드대로는 불가능하고 조건문 부분을 완전히 고치셔야 합니다. 알 수 없는 사용자 2021.4.16 02:32
- 아...그러네요 추천해주시는 방법 있을까요?,. 알 수 없는 사용자 2021.4.16 12:33
댓글 입력