How to find the most frequent value in int array with C

2 Answers

0 votes
#include <stdio.h>
 
int get_most_frequent_value(int arr[], int len) {
    int num[10] = {0};
     
    for (int i = 0; i < len; i++) {
        num[arr[i]]++;
    }
     
    int max_counter = 0, max_number = 0;
    for (int i = 0; i < 10; i++) {
        if (num[i] != 0) {
            printf("%d : %d\n", i, num[i]);
            if (num[i] > max_counter) {
                max_counter = num[i];
                max_number = i;
            }
        }
    }
     
    return max_number;
}
   
int main(int argc, char **argv) 
{
    int arr[] = { 2, 5, 3, 5, 5, 1, 5, 7, 3, 7, 7 };
    int len = sizeof(arr)/sizeof(arr[0]);
 
    int most_frequent_value = get_most_frequent_value(arr, len);
     
    printf("most frequent value = %d\n", most_frequent_value);
     
    return 0; 
}
    
      
/*
run:
    
1 : 1
2 : 1
3 : 2
5 : 4
7 : 3
most frequent value = 5
 
*/

 



answered Feb 21, 2019 by avibootz
edited Feb 21, 2019 by avibootz
0 votes
#include <stdio.h>
 
int get_most_frequent_value(int arr[], int len) {
    int num[10] = {0};
     
    for (int i = 0; i < len; i++) {
        num[arr[i]]++;
    }
     
    int max_counter = 0, max_number = 0;
    for (int i = 0; i < 10; i++) {
        if (num[i] != 0) {
            printf("%d : %d\n", i, num[i]);
            if (num[i] > max_counter) 
                max_counter = num[i], max_number = i;
        }
    }
     
    return max_number;
}
   
int main(int argc, char **argv) 
{
    int arr[] = { 2, 1, 7, 5, 3, 5, 5, 1, 5, 7, 3, 7, 7, 7 };
    int len = sizeof(arr)/sizeof(arr[0]);
 
    int most_frequent_value = get_most_frequent_value(arr, len);
     
    printf("most frequent value = %d\n", most_frequent_value);
     
    return 0; 
}
    
      
/*
run:
    
1 : 2
2 : 1
3 : 2
5 : 4
7 : 5
most frequent value = 7
 
*/

 



answered Feb 21, 2019 by avibootz

Related questions

2 answers 185 views
1 answer 195 views
1 answer 113 views
1 answer 151 views
2 answers 210 views
3 answers 207 views
...