2017-03-12 5 views
0

포인터로 프로그램을 만들었으므로 프로그램이 제대로 작동하지만 버블 정렬이 제대로 작동하지 않습니다. 누군가 나를 도와주고 내가 뭘 잘못하고 있는지 보여줄 수 있습니까? 에서 그냥 배열이 문제가 없었어요,하지만 어떻게 든 포인터와 잘 작동하지 않습니다.포인터가있는 버블 정렬이 제대로 작동하지 않습니다.

if(didSwap == 0); 
{ 
    break; 
} 

이 숫자를 정렬 고려 :

#include <stdio.h> 
#include <ctype.h> 

main() 
{ 
// Initializing pointer arrays 
int i; 
int ctr = 0; 
char ans; 
char * movies[5] = {"John Wick 2", "Kong: Skull Island", "Justice League", 
        "Mummies", "Thor: Ragnarok"}; 
int movierate[5]; 
int outer, inner, didSwap, temprate; 
char * tempmovies = "This will be used to sort rated movies"; 

printf("***Oscar Movie Rating***\n"); 
printf("Time to rate this years best picture.\n"); 
for(i = 0; i < 5; i++) 
{ 
    printf("\nHave you seen %s?", movies[i]); 
    scanf(" %c", &ans); 
    if((toupper(ans)) == 'Y') 
    { 
     printf("Please rate the movie on a scale from 1-10. "); 
     scanf(" %d", &movierate[i]); 
     ctr++; 
     continue; 
    } 
    else 
    { 
     movierate[i] = -1; 
    } 
} 
for(outer = 0; outer < 4; outer++) 
{ 
    didSwap = 0; 
    for(inner = outer; inner < 5; inner++) 
    { 
     if(movierate[inner] > movierate[outer]) 
     { 
      tempmovies = movies[inner]; 
      temprate = movierate[inner]; 
      movies[inner] = movies[outer]; 
      movierate[inner] = movierate[outer]; 
      movies[outer] = tempmovies; 
      movierate[outer] = temprate; 
      didSwap = 1; 
     } 
    } 
    if(didSwap == 0); 
    { 
     break; 
    } 
} 
for(i = 0; i < ctr; i++) 
{ 
    printf("\n%s rated a %d!", movies[i], movierate[i]); 
} 
return (0); 
} 
+0

'main()'은 main 함수의 유효한 프로토 타입이 아닙니다. 'int main (void)'또는'int main (int, char **)'표준에 부합한다. 달리 가르치고있는 사람은 당신에게 해를 끼치고 있습니다. – StoryTeller

+0

@StoryTeller 감사합니다. 차이점을 확인해 보겠습니다. –

+0

입력? 예상 결과? 실제 출력? – 4386427

답변

1

귀하의 문제가이 코드 10 이후 10 1 2 3 4

가 가장 많은 수이며, 제 1 외부 루프의 모든 스왑이되지 않습니다. 결과적으로 외부 루프에서 벗어나 나머지 숫자는 정렬되지 않습니다.

위의 코드를 제거하려고합니다.

+0

정말로 고맙습니다. –