Answer DC30
#include <stdio.h>
#include <stdlib.h>
/* Puzzle D30 -- insert the the value x at location N,
| move elements up to make room
|
| Do nothing to the array if index N does not exist,
| and return 0. Otherwise return 1.
|
*/
int insertElement( int size, int arr[], int val, int n )
{
int j;
if ( !(0<=n && n<size) ) return 0;
for ( j=size-1; j>=n; j-- )
arr[j+1] = arr[j];
arr[n] = val;
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;
}
}
/* Get user input, value and place to put it.
| Return 0 if the user wants to quit,
| otherwise return 1
*/
int userInput( int *x, int *y)
{
char inputX[32], inputY[32];
printf("\nvalue place: ");
scanf("%s", inputX );
if ( !isdigit((int)inputX[0]) && inputX[0] != '-' )
return 0;
else
{
scanf("%s", inputY );
*x = atoi( inputX );
*y = atoi( inputY );
return 1;
}
}
int main()
{
const int SIZE = 15;
int x[SIZE] ;
char input[32] ;
int val, place ;
fillArrayInOrder( SIZE, x, 0 );
printArray( SIZE, x );
while ( userInput( &val, &place ))
{
if ( insertElement( SIZE, x, val, place ) )
printf("Success\n\n");
else
printf("Failure\n\n");
printArray( x, SIZE );
}
return 0;
}