>要素の大きさも引数として渡す。
ArrayNumというのがそれです。
最終的にでてくる配列は渡した配列より要素が1つ少なくなるので
for (unsigned int i = ReduceNum ; i < ArrayNum - 1;i++){
array[i] = array[i + 1];
}
としてみました。

>しかしdelete使ってるという事はC++か?
>C++ならtemplate関数で書け。

C++です。でもtemplate関数わからないです・・・。
perlなら簡単なのになあ・・・・せめて
任意の型の配列の渡し方がわかれば何とかなる気がするのですが・・