Как преобразовать массив?

 

Всем добрый день

Не соображу как исключасть все нулевые значения из массива., т.е.:

из {0,2,34,2,1,4,0,3,0,2,4,0,0,0,54,0}

сделать {2,34,2,1,4,3,2,4,54} (порядок элементов менять нельзя)

всем спасибо!

 
qee:

Всем добрый день

Не соображу как исключасть все нулевые значения из массива., т.е.:

из {0,2,34,2,1,4,0,3,0,2,4,0,0,0,54,0}

сделать {2,34,2,1,4,3,2,4,54} (порядок элементов менять нельзя)

всем спасибо!

int tmp[]={0,2,34,2,1,4,0,3,0,2,4,0,0,0,54,0};

int i,j,Count;

j=0;

Count=размер массива

j=0;

for (i=0;i<Count;i++)

if(tmp[i]>0)

j++;

else

tmp[j]=tmp[i];

Надо только размер массива изменить и все.

 

Спасибо, подумаю.

 
qee:

Спасибо, подумаю.


Только я похоже ошибку сделал, но принцип такой. Обычно лучше использовать промежуточный массив, тогда проблем нет.
 
qee:

Не соображу как исключасть все нулевые значения из массива.


int arr[]   = { 0,2,34,2,1,4,0,3,0,2,4,0,0,0,54,0 };
int arrSize = ArraySize(arr);
 
int tmp[];
ArrayResize( tmp, arrSize );
 
int tmpSize = 0;
 
for ( int i = 0; i < arrSize; i ++ )
{
   if ( arr[i] > 0 )
   {
      tmp[tmpSize] = arr[i];
      tmpSize ++;
   }
}
 
ArrayResize( arr, tmpSize );
 
if ( tmpSize > 0 )
{
   ArrayCopy( arr, tmp, 0, 0, tmpSize );
}