How to move all zeros in int array to the end with C

2 Answers

0 votes
#include <stdio.h>
 
void move_zeros_to_end(int arr[], int len) {
	int j = 0;

	for (int i = 0; i < len; i++) {
		if (arr[i] != 0)
			arr[j++] = arr[i];
	}

	while (j < len)
		arr[j++] = 0;
}
   
int main(int argc, char **argv) 
{
	int arr[] = { 0, 3, 4, 0, 6, 0, 0, 8, 9, 0 };
	int len = sizeof(arr) / sizeof(arr[0]);

	move_zeros_to_end(arr, len);

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

    printf("\n");
	
    return 0; 
}
    
      
/*
run:
    
3 4 6 8 9 0 0 0 0 0
 
*/

 



answered Feb 24, 2019 by avibootz
edited Feb 25, 2019 by avibootz
0 votes
#include <stdio.h>
 
void move_zeros_to_end(int arr[], int len) {
	int j = 0;

	for (int i = 0; i < len; i++) {
		if (arr[i] != 0)
			arr[j++] = arr[i];
		// simulation - see how it works
		for (int i = 0; i < len; i++)
			printf("%d ", arr[i]);
		printf("\n");
		// simulation - see how it works 
	}

	while (j < len)
		arr[j++] = 0;
}
   
int main(int argc, char **argv) 
{
	int arr[] = { 0, 3, 4, 0, 6, 0, 0, 8, 9, 0 };
	int len = sizeof(arr) / sizeof(arr[0]);

	move_zeros_to_end(arr, len);

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

    printf("\n");
	
    return 0; 
}
    
      
/*
run:
    
0 3 4 0 6 0 0 8 9 0
3 3 4 0 6 0 0 8 9 0
3 4 4 0 6 0 0 8 9 0
3 4 4 0 6 0 0 8 9 0
3 4 6 0 6 0 0 8 9 0
3 4 6 0 6 0 0 8 9 0
3 4 6 0 6 0 0 8 9 0
3 4 6 8 6 0 0 8 9 0
3 4 6 8 9 0 0 8 9 0
3 4 6 8 9 0 0 8 9 0
3 4 6 8 9 0 0 0 0 0
 
*/

 



answered Feb 24, 2019 by avibootz
edited Feb 25, 2019 by avibootz

Related questions

1 answer 167 views
1 answer 166 views
1 answer 159 views
1 answer 207 views
1 answer 162 views
1 answer 135 views
135 views asked Nov 27, 2021 by avibootz
2 answers 178 views
...