How to check if there is two equal elemets in array in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 
 
#define N 10

void print_array(int arr[], int len);
int compare(const void *a, const void *b);
int two_elemets_equal(int arr[], int len);
 
int main(void)
{
    int i, arr[N] = { 0 };    
        
    srand(time(NULL));
    for (i = 0; i < N; i++)
         arr[i] = rand() % 30 + 1;
            
    print_array(arr, N);
    printf("\n");
    
    qsort(arr, N, sizeof(int), compare);
    print_array(arr, N);
    printf("\n");
    
    if (two_elemets_equal(arr, N))
        printf("\nThere are two elemets equal\n");
    else
        printf("\nNot found two elemets equal\n");
     
    return 0;
}
 
int two_elemets_equal(int arr[], int len)
{
    int i;
    
    for (i = 0; i < len - 1; i++)
        if (arr[i] == arr[i + 1]) return 1;

    return 0;
}
 
int compare(const void *a, const void *b)
{
   return ( *(int*)a - *(int*)b );
}

void print_array(int arr[], int len)
{
    int i;
     
    for (i = 0; i < len; i++) printf("%4d", arr[i]);

}
 

/* 
run:

  29   1   3  10   4  15  10  27  20  10
   1   3   4  10  10  10  15  20  27  29

There are two elemets equal

*/




answered Sep 27, 2014 by avibootz
...