2012-04-11 24 views
1

これは私が持っているものです。それはゼロをスキップしています。どうすれば修正できますか?数字が重複した回数を数えようとしています。配列内のintを比較するネストされたループ

void hit_rate(int a, int cmset[]) 
{ 
    int i, j, k=0; 
    for(i=0;i<a;i++){ 
     for(j=i;j<a;j++){ 
      if((cmset[i] == cmset[j])){ 
       k++; 
      } 
     } 
     printf("%d\n",k); 
     k=0; 
    } 
} 

cmset  k **now** prints 
    4   2  
    6   1   
    0   3  
    0   2  
    0   1  
    1   1  
    2   1  
    4   1  
+3

for(j = 0; j <= 1; j ++) 'は正しいですか? – Naveen

+0

いいえ、それはありませんでした、ありがとう – oldbutnew

答えて

3

されるべきであり、 例えばarr[5] = {1, 2, 2, 3, 3};あなたは全てのi = 1..4で[0] ARRテストしている場合はどうなるか。これにより

i = 0; // first loop 
j = i; //2nd loop 

comapre arr[i] == arr[j]; //condition と 開始。 次回の反復では、既に完了している(またはチェックされている)ため、[1]をarr [0]でチェックする必要はありません。 カウンタを大きくします(重複が一致する場合)。アレイリセットカウンタの終わりを終了する。印刷してください。 私はそれが助けてくれることを願っています。それでも私はあなたにサンプルコードを提供します。

3

重複をカウントしながらfor(j=0;j<a;j++)