How to delete duplicate elements (set them to zero) from one dimensional int array in C

1 Answer

0 votes
#include <stdio.h>
 
int main(void)
{
    int arr[] = { 1, 2, 3, 2, 5, 6, 6, 2 };
	int i, j, k, size;
	
	size = sizeof(arr) / sizeof(int); 
 
	for (i = 0; i < size; i++) 
	{
		for (j = i + 1; j < size;) 
		{
			if (arr[j] == arr[i]) 
			{
				for (k = j; k < size - 1; k++) 
				{
					arr[k] = arr[k + 1];
				}
				size--;
				arr[k] = 0;
			}	 
			else
				j++;
		}
	}
 
	printf("Array without duplicate elements:\n");
	for (i = 0; i < size; i++) 
		printf("%3d ", arr[i]);
   
	printf("\n");
   
	printf("Array with zero set elements instead the duplicate elements:\n");
	size = sizeof(arr) / sizeof(int); 
	for (i = 0; i < size; i++) 
		printf("%3d ", arr[i]);
     
    return 0;
}

 
/* 
run:
 
Array without duplicate elements:
  1   2   3   5   6
Array with zero set elements instead the duplicate elements:
  1   2   3   5   6   0   0   0
 
*/

 



answered Feb 11, 2016 by avibootz
...