Answer DC29
#include <stdio.h>
#include <stdlib.h>
/* Puzzle D29 -- delete the element at index N,
| move elements down to fill the gap.
|
| Do nothing to the array if index N does not exist,
| and return 0. Otherwise return 1.
|
*/
int deleteElement( int size, int arr[], int n )
{
int j;
if ( !(0<=n && n<size) ) return 0;
for ( j=n; j < size-1; j++ )
arr[j] = arr[j+1];
arr[size-1] = 0;
return 1;
}
void printArray( int size, int arr[] )
{
const int N = 10;
int j;
for ( j=0; j < size; j++ )
{
if ( j%N == N-1 )
printf("%4d\n", arr[j] );
else
printf("%4d ", arr[j] );
}
}
void fillArrayInOrder( int size, int arr[], int first )
{
int j;
for ( j=0; j < size; j++ )
{
arr[j] = first+j;
}
}
int main()
{
const int SIZE = 25;
int x[SIZE];
char input[32];
int del ;
fillArrayInOrder( SIZE, x, 0 );
printArray( SIZE, x );
printf("\ndelete at index:");
gets( input );
while ( strcmp( input, "q") != 0 )
{
del = atoi( input );
if ( deleteElement( SIZE, x, del ) )
printf("Success\n\n");
else
printf("Failure\n\n");
printArray( SIZE, x );
printf("\ndelete at index:");
gets( input );
}
return 0;
}