2012-05-29 99 views
-3

我寫了一個程序,它從用戶獲取一些數字,然後允許輸入數字,然後創建兩個線程來計算總和,另一個來計算Avg,但給出數字後程序停止並給出錯誤爲什麼?程序停止並且不執行線程爲什麼?

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

int count ; 

DWORD WINAPI Sum(PVOID s) 
{ 
    int *sum=(int *)s; 
    DWORD c=0; 
    for(int i=0;i<count;i++) 
     c+=sum[i]; 
    return c; 
} 

DWORD WINAPI Avg(PVOID s) 
{ 
    int *var=(int *)s; 
    DWORD avg=0; 
    avg=(*var/count); 
    return avg; 
} 

int main() 
{ 
    printf("Enter the number of numbers\n"); 
    scanf("%d",&count); 
    int *s = (int*)malloc(sizeof(int)*count); 
    printf("now enter the numbers\n"); 
    for(int i=0;i<count;i++) 
     scanf("%d",s[i]); 

    HANDLE t1 , t2; 
    DWORD id1 , id2 , c1 , c2; 
    t1 = CreateThread(NULL , 0 , Sum , s , 0 , &id1); 
    WaitForSingleObject(t1,INFINITE); 
    GetExitCodeThread(t1 , &c1); 
    printf("The Sum = %d", c1); 
    t2 = CreateThread(NULL , 0 , Avg , (PVOID*)&c1 , 0 , &id2); 
    WaitForSingleObject(t2,INFINITE); 
    GetExitCodeThread(t2 , &c2); 
    printf("The AVgerage = %d", c2); 
    return 0; 
} 

如果任何人能幫助我將會感恩。 謝謝 因此,T更新程序,現在它的工作,但Avg是錯誤的,這是因爲當我試圖打印它像這樣printf(「AVG =%f \ n」,C2)結果爲零爲什麼?

+0

請在此問題上添加語言標籤。我假設C++? – Gray

回答

0

scanf需要參考。

scanf("%d",&s[i]); 
+0

我把它,但仍然是一樣的。 – Lara

+0

但感謝您的幫助 – Lara

+0

您將有幸親自找到其他問題:) – Ivarpoiss