3) Удалить элемент с номером К.
В
массивы C/C++ нельзя ничего добавлять и из них нельзя ничего удалять, массивы C/C++ статические.
Можно только создавать
новые массивы, "похожие" на своих предшественников, где будет элементов больше или меньше ... и каждый раз - копирование
всех нужных элементов.
Добавлю:
- по п.п.4-5 - наслаждайтесь (случайные числа я генерить не стал - так нагляднее):
void defuse( const int a[], int n ) {
int lim = n + n / 2,
d[ lim ],
t = lim - 1;
while( --n >= 0 ) {
d[ t-- ] = a[ n ];
if( n % 2 == 0 ) d[ t-- ] = 0;
}
for( int n = 0; n < lim; n++ )
cout << d[ n ] << ( n == lim - 1 ? "\n" : " " );
}
int main( int argc, char* argv[] ) {
const int N = atoi( argv[ 1 ] );
int arr[ N ];
for( int i = 0; i < N; i++ )
cout << ( arr[ i ] = i + 1 ) << ( i == N - 1 ? "\n" : " " );
defuse( arr, N );
}
- а чтобы вою было меньше ... исполняем:
$ ./narr 5
1 2 3 4 5
1 2 0 3 4 0 5
$ ./narr 6
1 2 3 4 5 6
0 1 2 0 3 4 0 5 6
- кстати, тот же трюк (без всяких malloc()) можете проделать и в
современном C ;-)