2013-03-25 2 views
1

나는 선택 정렬 작업 중입니다.깨진 선택 정렬 C

내 문제는 "void sort"에서 내 코드를 모두 삭제하면 프로그램이 실행된다는 것입니다. 모든 코드를 다시 입력하자마자 "void sort"는 "void sort"의 첫 번째 "printf"함수를 사용하지 않습니다. 나는 무엇이 모든 것을 걸고 있는지 모른다.

여기서 두 번째 문제는 이러한 기능 해야 이렇게이다 :

실행을 통해 그들이 어레이 [] 바르와, X (시작점) 온도 (최저 임시 번호) 및 K (현재 번호.) 각 반복에 대해 x에서 시작하여 temp = x로 설정하고 k = (x + 1)로 설정 한 다음 k ++가 배열의 끝에 도달 할 때까지 설정해야합니다. 배열 [k]가 배열 [temp]보다 작 으면 temp와 k를 같게 설정해야합니다. 그리고 마지막에 배열 [x]와 배열 [temp]을 교환하고 (x + 1)에서 다시 시작합니다.

이전에 작동했을 때, x = 7이라는 결과가있었습니다. 목록), 마지막 번호 만 인쇄합니다. :/wat do

또한, 필요하지 않지만 2 차 질문 어떻게 void 함수에서 정렬 된 배열을 반환합니까? 글로벌 vars? 다른 것?

#include <stdio.h> 
#define SIZE 8 

void sort(int array[], int size) 
{ 
    printf("starting sort, declaring vars..."); 
    int temp, placeholder, x, k; 
    printf("setting x..."); 
    x = 0; 
    printf("size(%d), i(%d)", size, x); 
    printf("starting sort loop..."); 
    while (x < (size - 1)); 
    { 
     k = (x + 1); 
     temp = x; 
     while(k < size) 
     { 
      if(array[k] < array[temp]) 
       temp = k; 
      k++; 
     } 
     printf("array[%d] is %d from array[%d]\n", x, array[temp], temp); 
     placeholder = array[temp]; 
     array[temp]= array[x]; 
     array[x] = placeholder; 
     printf("%d ", array[x]); 
     x++; 
    } 
    printf("\n"); 
} 

int main(void) 
{ 
    int numbers[SIZE] = {4, 15, 16, 50, 8, 23, 42, 108 }; 
    int i; 
    for (i = 0; i < SIZE; i++) 
     printf("%d ", numbers[i]); 
    printf("\ncounted and sorting...\n"); 
    sort(numbers, SIZE); 
    for (int i = 0; i < SIZE; i++); 
     printf("%d", numbers[i]); 
    printf("\n"); 
    return 0; 
} 
+3

모든 인쇄 명령문 다음에'\ n'을 넣어보십시오. 출력이 버퍼링 될 수 있습니다. – Claudiu

+0

완전히 옳았습니다. 나는 그것을했는데, 이제 "void sort"에서 "while (x <(size - 1))"루프가 멈추었습니다. – user2208569

답변

2
이 질문을 서면 또는 코드에서 실수가 있었다면 나도 몰라

하지만

while (x < (size - 1)); 

이 올바르지 않습니다. 그것은 아무 것도하지 않으며 무한대로 반복됩니다. 원하는 효과를 얻으려면 세미콜론을 사용하십시오. 마찬가지로,

for (int i = 0; i < SIZE; i++); 

세미콜론이 없어야합니다. 또한 i을 적절한 C로 선언 할 수 없으며 i이 이미 선언되었으므로 for (i = 0; ...에 두는 것이 좋습니다.

+0

나는 이것이 이것이라고 생각한다. 'x'와'size'는 반복문 안에서 결코 바뀌지 않습니다, 그래서 그것은 단지 반복됩니다. – Claudiu

+0

오른쪽 오른쪽. 내 벼랑이있다. 이제 모든 문제가 해결되었습니다! – user2208569

+0

안녕하세요! 이 답이 가장 도움이된다고 생각되면 왼쪽 위의 체크 표시를 클릭하여 답변을 "수락"할 수 있습니다. 나중에 방문자가 어떤 대답이 가장 도움이되는지 확인할 수 있습니다. – raptortech97