[E-5]
Write function that moves each element of the array up one position.
Element 0 becomes a zero, and the last element of the array is discarded.
Here is an example:
0 1 2 3 4 5 6 7 8 9 Shifted Right One: 0 0 1 2 3 4 5 6 7 8
Here is a testing framework:
#include <stdio.h>
#include <stdlib.h>
/* Puzzle D33 -- shift every array element one position to the right */
/* element 0 gets 0, the original last element is lost */
void shiftRightArray( int size, int arr[] )
{
. . .
}
void fillArrayInOrder( int size, int arr[] )
{
int j;
for ( j=0; j<size; j++ )
{
arr[j] = j;
}
}
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] );
}
}
int main()
{
const int SIZE = 10;
int x[ SIZE ];
fillArrayInOrder( SIZE, x );
printArray( SIZE, x );
printf("\nShifted Right One:\n");
shiftRightArray( SIZE, x );
printArray( SIZE, x );
printf("\n\n");
return 0;
}