2014-04-12 4 views
0

정렬 여부를 내 코드입니다 : 여기qsort가 내 배열 여기

#include <stdio.h> 
#include <stdlib.h> 

float comp (const void * elem1, const void * elem2) { 
    float f = *((float*)elem1); 
    float s = *((float*)elem2); 
    if (f > s) return 1; 
    if (f < s) return -1; 
    return 0; 
} 

int main(void) { 
    int t, n, temp, temp1, x; 
    float input[2][50][1000]; 
    scanf("%d", &t); 
    for(temp=0; temp<t; temp++){ 
     scanf("%d ", &n); 
     for(temp1=0; temp1<n; temp1++){ 
      scanf("%f", &input[0][temp][temp1]); 
     } 
     for(temp1=0; temp1<n; temp1++){ 
      scanf("%f", &input[1][temp][temp1]); 
     } 
     for(x=0; x<temp1; x++){ 
      printf("%f", input[0][temp][x]); 
     } 
     qsort (input[0][temp], n, sizeof(*input[0][temp]), comp); 
     printf("\n Sorted Array:"); 
     for(x=0; x<temp1; x++){ 
      printf("%f", input[0][temp][x]); 
     } 

    } 
    return 0; 
} 

와 나의 출력 : 0.7000000.2000000.800000 정렬 된 배열 : qsort가 인 이유 0.7000000.2000000.800000이

사람이 (말할 수)하지 나를 위해 일해?

+6

비교 함수는'int' (float이 아니라)를 반환해야합니다. –

+0

[** 라이브보기 **] (http://ideone.com/XCDxl0) – WhozCraig

+0

@AlterMann Hail! 감사합니다 –

답변

0

비교 함수는 int (float 아님)을 반환해야합니다. 따라서 수행 할 작업은 다음과 같습니다. float comp (const void * elem1, const void * elem2) { ~ int comp (const void * elem1, const void * elem2) { 이제 끝났습니다. :)