C언어에서 배열의 중앙값을 배열 내 정수 이동 없이 구할 수 있는 방법이 어떤 게 있나요?
글쓴이: 도와주세요 / 작성시간: 화, 2021/06/08 - 12:21오전
간단히 배열은 정수 원소가 3개만 들어가는 배열입니다. main함수 이전에 mid함수에서 중앙 값을 구해야 하고 반환 값은 중앙값이 저장된 배열 원소의 주소입니다.
일단 제가 작성한 코드입니다. 배열 내의 정수의 이동이 있었기 때문에 조건에 위반이 되지만 일단 작성해보았습니다. 이렇게 작성을 했는데도 디버깅을 했는데 값이 안 나오고 조금 있다가 띄어쓰기만 나오고 끝나더라구요...제가 오늘 포인터를 배운 터라 개념이 많이 부족합니다. 조금 도와주세요...ㅠㅠㅠ
int mid (int n[3]) {//세 개의 정수를 정렬하는 등 배열 내 정수의 이동 없이 중앙 값을 찾아내야 함 int* p, * a, tmp = 0; for (p = n;p < n + 3;p++) { for (a = p;a < n + 3;a++) { if (*p > *a) { tmp = *p; *p = *a; *a = tmp; } } } *p = (n + 1); return p;//중앙 값이 저장된 배열 원소의 주소 반환 } int main() { int n[3], * p; for (p = n;p < n + 3;p++) { scanf("%d", p); } int* a = &n; a = mid(n[3]); printf("%d", *a); return 0; }
Forums:
kldp 소스코드에는 code 태그 쓰세요.
도와드리고 싶네요. 그래서 kldp에서 글 쓸 때 주의할 것 하나 알려드려요.
kldp에서 소스 코드에는 code 태그 쓰세요.
안 그러면 소스 코드 읽기 어려워져요.
세벌 https://sebuls.blogspot.kr/
단순 무식한 솔루션 때려 박기
단순 무식한 솔루션 때려 박기
우아함이나 효율과는 1광년쯤 떨어진 코드입니다만 대충 이렇게 짜도 요구 조건은 맞춥니다.
머리를 더 쓰면 중복되는 비교를 상당수 덜어낼 수도 있겠지만 그건 독자에게 연습문제로 남기죠.
이런. 배열 매개변수가 a가 아니라 n이군요. 습관이
이런. 배열 매개변수가 a가 아니라 n이군요. 습관이 돼서 그만.
수정할 수가 없으니 적절히 고쳐서 읽어주세요.
댓글 달기