how to remove zeros from int array? for ex if i have a array 1,2,0,34 than result is 1,2,34.
i was thinking may be use trim function?
another idea was to put space. for ex 1,0,2,0,3 than reslust is 1, ,2, ,3

note iam trying to do this without making another array.

int a[5];  //has the value 0,1,0,3

for(i = 0; i < 5; i++)
{
  if(a[j] == 0)
   a[i] = ' '?
}

one way is to store the values after the index containing 0 to an index before it, but you need to be aware of the last index of the array that has a value

A better approach would be using stack or queue

s there a way to replace 0 with space?

you cannot replace 0 with a space, as you are using an integer array. Whereas, space comes under characters. If you try to do that, the program will print the ASCII value of space bar instead of giving a space

And when you are incrementing "i" , you need to take

if(a[i]==0)

Edited 4 Years Ago by Vish0203

how to remove zeros from int array? for ex if i have a array 1,2,0,34 than result is 1,2,34.

I wrote my program in this way... See how does it work.. wht i did is, whenever a zero occured in array, i swapped the value with the next one.

Here's my code!

#include<conio.h>
#include<stdio.h>
int main()
{
 int a[5],i;  //has the value 0,1,0,3
 printf("enter array elements");
 for(i=0;i<5;i++)
  {
    scanf("%d",&a[i]);
  }
 printf("Array elements are\n");
 for(i = 0; i < 5; i++)
 {
    if(a[i] == 0)
     {
       a[i]=a[++i];  //this is what i did
     }
    printf("%d ",a[i]);
 }
 return 0;
}

Edited 4 Years Ago by Vish0203

@Vish0203

nope you need to think about every scenario that could happen

what if the array has values:
1 2 0 4 0 , //values that end with zero or
1 0 0 4 5 //values that have successive or repeating zeros

etc....

Edited 4 Years Ago by zeroliken: added info

@zeroliken
Hmmm.. you are right!! didn't thought about that!!

@hwoarang69 yea... you better go with it!!

hey!!! wait a sec!!

How about this???? ? The second "If" statement, checks for the repeated zeroes...

#include<conio.h>
#include<stdio.h>
int main()
{
 int a[5],i;  //has the value 0,1,0,3
 printf("enter array elements");
 for(i=0;i<5;i++)
  {
     scanf("%d",&a[i]);
  }
 printf("Array elements are\n");
 for(i = 0; i < 5; i++)
 {
     if(a[i] == 0)
      {
            //this is what i did
         a[i]=a[++i];
      }
    if(a[i]!=0)
  printf("%d ",a[i]);
 }
 return 0;
}

Edited 4 Years Ago by Vish0203

I just threw this together. It will move all zero values to the end of the array. Hope it helps.

    int iarr[] = {1, 3, 0, 0, 5, 7, 0, 0, 0, 9, 9, 6, 0};
    int len = sizeof(iarr)/sizeof(iarr[0]);
    int i , j, idx;

    for (idx = 0; idx < len; ++idx)
    {
        if (iarr[idx] == 0)
        {
            j = idx;
            ++j;

            while (iarr[j] == 0 && j < len)
            {
                ++j;
            }

            iarr[idx] = iarr[j];
            // set substituted value to zero
            iarr[j] = 0;
        }
    }

    for (i = 0; i < len; ++i)
    {
        printf("%d ", iarr[i]); // 1, 3, 5 ,7, 9, 9, 6, 0, 0, etc
    }

Edited 4 Years Ago by nullptr

Then don't show them.

for (i = 0; i < len; ++i)
{
    if (! iarr[i])
        break;

    printf("%d ", iarr[i]); // 1 3 5 7 9 9 6
}

Also in my previous post, lines 10 to 15 can be replaced with:

while (iarr[++j] == 0 && j < len) ;

Edited 4 Years Ago by nullptr

Your program shows a garbage value at the end!
i mean the output is

1 3 5 7 9 9 6 9151

Can you remove this garbage value?

To remove the garbage, put lines 17 to 19 of nullptr's previous post in an if statement with condition j < len

Are you sure that you needed to remove them instead of only not show them or pass them?

#include <stdio.h>
#include <stdlib.h>

int iarr[] = {1, 3, 0, 0, 5, 7, 0, 0, 0, 9, 9, 6, 0, 9};
int len = sizeof(iarr)/sizeof(iarr[0]);

int main()
{
    int i;
    for (i = 0; i < len; i++)
    {
        if(iarr[i]) printf("%d ", iarr[i]);
    }
}

Edited 4 Years Ago by pyTony: fix to postincrement, remove stale comment

@pytony

That's awesome!!
in "if" statement, if iarr[i]=0, means the statement is false and hence it doesn't print it!!
Is that what happening there???

This article has been dead for over six months. Start a new discussion instead.