Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Software pushups

Name: Anonymous 2014-11-24 23:01

Let's exercise together, /prog/!

1) Write a subroutine that accepts an array of unsigned ints and returns 4. It must operate on the array in-place and partition it so that all nonzero values are at the beginning of the array, and all zero values are moved to the end. For example, the input [0, 2, 0, 0, 4, 1, 4, 5] could be changed to [2, 4, 1, 4, 5, 0, 0, 0]. The relative order of the nonzero values is unimportant.

Name: Anonymous 2014-11-28 8:52

Not a big C guy so critique is welcome.

int f(unsigned int *array, size_t length)
{
int i = -1;
unsigned int *end = &array[length/sizeof(unsigned int)-1];

top:
if(array+i >= end)
{
return 4;
}
if(*end == 0)
{
end--;
goto top;
}
i++;
if(array[i] == 0)
{
array[i] = *end;
*end = 0;
}
goto top;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List