2014-01-18 72 views
1

有人可以幫我解決下列問題的代碼嗎?我有一個N維int數組。我需要創建另一個數組,並在那裏放置第一個數字的每個數字的頻率。 例如 tab1 [N] = 0 0 0 1 1 1 2 2 2 4 5 ... etc 結果必須是一個新數組,其值爲:3(因爲有3個零)3(因爲有3個)3 1 1 ...創建一個頻率數組

另外,我只需要使用For,While和If。

我創建了這段代碼,但它不起作用。

int m=0; 
int k = 0; 
while (k<N) 
{ 
    if (tab1[k] == tab1[k+1]) 
    { 
     fuqi[m]++; 
     k++; 
    } 
    m++; 
    k++; 
} 
+0

你能解釋一下多一點,然後「它不工作」?你得到了什麼? – Vadiklk

+0

運行代碼後,Dos停止工作(現在結束消息顯示)。 – user3173029

+0

我不確定,但我認爲是因爲N和tab1 [k + 1]的值! – user3173029

回答

1

我覺得這更直截了當。

for (int i = 0; i < N; i++) { 
    fuqi[i] = 0; 
} 

fuqi[0] = 1; 

for (int i = 1, j = 0; i < N; i++) { 
    if (tab1[i - 1] == tab[i]) 
    ++fuqi[j]; 
    else 
    ++fuqi[++j]; 
} 

注意,我跳過檢查對於N == 0,

0

試試這個:

假設fugi設置爲0

int m=0; 
for(int i = 0; i < N; i++) 
{ 
    fuqi[m]++; 
    if (!(i == N - 1 || tab1[i] == tab1[i+1])) 
    { 
     m++; 
    } 
} 
+0

謝謝,它的工作原理......但如果需要獲取最後一個值(N)呢? – user3173029

+0

你是什麼意思「得到」?它也算最後一個。 – Vladp