You just need to overwrite what you're deleting with the next value in the array, and then keep in mind where the new end is:
int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// delete 3
for (int i = 2; i < 8; ++i)
{
array[i] = array[i + 1]; // copy next element left
}
Now your array is {1, 2, 4, 5, 6, 7, 8, 9, 9}. You cannot delete the extra 9 since this is a stack-allocated array.
If this was a dynamically allocated array, you could make room for a new array:
int *newArray = new int[8];
int index = 0;
for (int i = 0; i < 9; ++i)
{
if (i != 2) // copy all but second
{
newArray[index++] = array[i];
}
}
But why not use the standard library? The standard library has a remove function, along with vector to replace arrays.
And if you want to remove from any point, consider a list, for example, which can actually remove the value, rather than move it to the end.