2014-10-16 58 views
-2

我想用數組中的鍵創建表。有沒有一種簡單的方法來做到這一點。使用特定值計算函數調用的次數

int array1[] = {1,5,3,8,9,11}; 
// table[1] 
// table[5] 
// table[3] 

int count(int a) 
{ 

    //a is one of the values in array. array1[] = {1,5,3,8,9,11}; 
    // for ex 3. 
    // I have to figure out how many times this function was called with what values 1/5/3/8/9/11 
    table[3]++; 
} 
+0

創建一個全局數組(即在你的函數count()之外),將它設置爲零(int)。如果遇到array1中的值,則增加indice值。 – aghoribaba 2014-10-16 18:35:06

回答

0

一個簡單的代碼

#include<stdio.h> 
int n = 6; //number of elements in array1 
int array1[] = {1,3,5,8,9,11}; 
int *funCount;//Count of elements in array1 
int count(int a) 
{ 
    int i; 
    for(i = 0; i < n; i++) 
    if(a == array1[i]) 
     break; 
    funCount[i]++; 
} 

int main() 
{ 
    funCount = (int*)calloc(n, sizeof(int)); 
    int i; 
    count(1); 
    count(3); 
    count(5); 
    count(8); 
    count(9); 
    count(11); 
    for(i = 0; i < n; i++) 
    printf("%d ",funCount[i]); 
    return 0; 
} 

這種做法是好的,如果你array1將是小! 否則我會建議你使用哈希

+0

甚至不會編譯。 'n'不是一個常量表達式。 – 2014-10-16 18:42:23

+0

顯然它不會編譯!你能指望什麼?從我完成的代碼?他可以通過掃描來設置'n'的值! – Nullpointer 2014-10-16 18:43:00

+0

我不期望完整的代碼,因爲我不是OP。但是,這不是C,至少不是有效的C,因爲它是錯誤的,它根本沒有幫助。雖然他可以用'scanf()'設置'n'的值,但這樣做不會有任何好處 - 全局數組的長度不能變化。 – 2014-10-16 18:44:01

相關問題