2016-02-20 31 views
-1

頁眉...冒泡與測量時間

的main.c

int main() 
{ 
    double *a = NULL ,n; 
    read(&a,&n); 
    clock_t start,stop; 
    start = clock(); 
    bubblesort(a,n); 
    stop = clock(); 
    float elapsedTime = (stop - start)/CLOCKS_PER_SEC; 
    printf("%f",elapsedTime); 
    write(a,n); 

    free(a); 
    return 0; 
} 

sema.c

void read(int *a,int n) 
{ 
    int i; 
    scanf("%d",&n); 
    a = (int*)malloc(n*sizeof(int)); 
    if(a == 0){printf("Error");return 0;} 
    for(i = 0; i < n; ++i){ 
     a[i] = rand() % 100; 
    } 
} 

void bubblesort(int *a,int n) 
{ 
    int i,j,csere; 

    for(i = 0; i < n-1; ++i){ 
     for(j = 0; j < n - i -1; ++j){ 
      if (a[j] > a[j + 1]){ 
       csere = a[j]; 
       a[j] = a[j + 1]; 
       a[j + 1] = csere; 
      } 
     } 
    } 
} 
void write(int *a,int n) 
{ 
    int i; 
    for(i = 0; i < n; ++i){ 
     printf("%i ",a[i]); 
    } 
} 

sema.h

void read(int*,int*); 
void write(int*,int); 
void bubblesort(int*,int); 

我用調試器找到任何我problem.My寫入功能不能正常工作,因爲它認爲n爲0,但我輸入that.Also測量的時間不工作,我得到爲零。我真的不明白爲什麼n是零,如果我輸入。

+0

如果你的編譯器沒有給你任何關於你的代碼中的錯誤的警告,那麼可能是得到一個新的編譯器的時候了。 –

回答

-1

在main中,您將變量初始化爲double,但在其他函數中將其作爲整數進行初始化。 在讀(), 原型是void read (int *a, int *n);
但你定義void read(int *a, int a)和read()方法,爲什麼你在「如果條件」既然你提到void類型返回0。