2012-04-11 3 views
1

이것은 내가 가진 것입니다. 그것은 0을 건너 뛰고 있습니다. 어떻게 해결할 수 있습니까? 숫자가 중복되는 횟수를 계산하려고합니다.배열의 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 테스트 한 경우 발생이에 의해

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

comapre arr[i] == arr[j]; //conditionarr[5] = {1, 2, 2, 3, 3}; 시작 [0] 모두와 I = 1..4; 다음 반복에서 arr [0]으로 [1]을 확인하지 않아도됩니다. 이미 완료되었거나 확인 되었기 때문입니다. 카운터가 증가합니다 (복제가 일치 할 때). 일단 어레이 리셋 카운터의 끝을 끝내면 그것을 인쇄하십시오. 도움이되기를 바랍니다. 여전히 혼란 스러울 때 나는 샘플 코드를 제공 할 것이다.

3

중복을 계산하는 동안 for(j=0;j<a;j++)