2013-05-18 5 views
-2

C에서 특정 원소가 배열에 몇 번 나왔는지 계산하려면 어떻게해야합니까? 그런 다음 그 수를 사용자에게 표시하는 방법은 무엇입니까?배열에있는 원소의 개수를 계산하는 방법

예를 들어 배열이 {1, 2, 2, 2, 3} 인 경우 2이 3 번 나타나는 코드를 작성한 다음 사용자에게 표시하려면 어떻게해야합니까?

+0

http://rapidpurple.com/blog/tutorials/c-tutorials/programming-in-c -arrays-and-loops/ –

+0

일부 코드 또는 가상 코드 또는 생각이나 시도에 대해 게시하려고 시도해야합니다. 제 제안은 종이에 직접 (기계라면) 어떻게 할 것인지 작성하는 것입니다. 그런 다음 코드로 변환 할 수 있는지 확인하십시오. 확실히 번역본에 딸꾹질이 생길 것입니다. 그렇지만 생각할 수있는 더 작고 구체적인 질문이 있습니다. – rliu

+0

배열에서 발생할 수있는 값의 범위에 제약이 있습니까? 단지 1000 이하의 양수 값이라면, 이것은 간단합니다. 즉, 카운트의 두 번째 배열 만 있으면됩니다. 가능한 값이 발생할 수 있다면 그렇게 간단하지 않습니다. – Bull

답변

0

모든 요소 만 계산하려는 경우 : 배열에 제한된 범위의 정수가 포함될 수 있다고 가정하면 첫 번째 배열의 최대 항목 길이를 다른 배열로 선언하십시오. 첫 번째 배열을 반복하고 두 번째 배열 색인의 위치를 ​​첫 번째 배열만큼 증가시킨 다음 두 번째 배열을 인쇄하십시오.

의사 코드 :

int nums[] = {1,2,2,2,3}; 

int counts[10]; // assume entries in nums are in range 0..9 

for(i = 0; i < length of nums; ++i) 
{ 
    num = nums[i]; 
    if(num < 0 or num >= length of counts) 
     handle this somehow 
    ++counts[num]; 
} 
for(i = 0; i < length of counts; ++i) 
{ 
    printf("%d occurs %d times\n", i, counts[i]); 
} 

만 특정 값을 계산하려면 다음

int count_in_array(int value, int* array, int length) 
{ 
    int count = 0; 
    int i; 
    for(i = 0; i < length; ++i) 
    { 
     if(array[i] == value) 
      ++count; 
    } 
    return count; 
} 

... 
int nums[] = {1,2,2,2,3}; 
printf("%d occurs %d times\n", 2, count_in_array(2, nums, 5)); 
+0

아 감사합니다. –

+0

'for (i = -; i <길이; i ++ i)' – BLUEPIXY

관련 문제