2013-05-18 5 views
-2

В C, как я могу подсчитать, сколько раз в массиве появляется определенный элемент? А затем, как отобразить этот счет для пользователя?Как подсчитать элементы в массиве в 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

Ah ok thank you –

+0

'for (i = -; i BLUEPIXY

Смежные вопросы