2017-12-23 3 views
-2

중앙 배열 번호를 찾으려면 배열을 구성해야합니다. 내 질문에 _ [] 연산자를 사용할 수 없으며, 내 코드 당신은 아이디어를 가지고 있지만, 제대로 사용하지 않은[] 연산자를 사용하지 않고 포인터로 배열을 구성하는 방법

int Median(int* numbers, int size) 
{ 
    int temp; 
    int *num_tmp = numbers; 
    int i, j; 
     for (i = 0; i< size - 1; i++) { 
     for (j = i + 1; j< size; j++) { 
      if (*(num_tmp+1) < num_tmp) { 
       temp = num_tmp; 
       num_tmp = (num_tmp+1); 
       *(num_tmp+1) = temp; 
      } 
     } 
     } 
} 
+0

감사합니다 ... 놀라운 .. 작동 .. –

+2

나는 [프로그램을 디버깅하는 방법을 배우는] 완벽한시기라고 생각합니다. (https://ericlippert.com/2014/03/05/how-to-debug - 작은 프로그램 /). –

+0

컴파일러를 사용하는 경우 불평하지 않았습니까? – coderredoc

답변

0

작동하지 않는 이유는 볼 수 없습니다.

if (*(num_tmp+1) < num_tmp) 
    ^^^^^^^^^  ^^^^ 
    An int value A pointers value 

주소를 int 변수와 비교합니다. 너는 그걸 원하지 않아. 비트를 변경하면

if (*(num_tmp+1) < *num_tmp) 

이제 논리적으로 맞습니까? 아닙니다. 알고리즘이 여전히 잘못되었습니다.

그것은 당신이 올바르게 배열을 구성하는 것이 코드

if (*(num_tmp+j) < *(num_tmp+i)) 
{ 
    temp = *(num_tmp+j); 
    *(num_tmp+j) = *(num_tmp+i); 
    *(num_tmp+i) = temp; 
} 

을해야합니다.

또한 gcc을 사용하여 프로그램을 컴파일하는 경우 -Wall -Werror을 추가하면 모든 경고가 표시됩니다.

관련 문제