/*
* author: lx
* date: 2011-09-16
* brief: programming pearls column2
*/
#include <stdio.h>
#include <stdlib.h>
void
move_vector( char* b, int m, int n )
{
int i = 0;
int j;
char temp;
for ( ; i < n ; i++ )
{
for ( j = i; j < m; j += n )
{
if ( j == i )
temp = *( b + j );
else
*( b + j - n ) = *( b + j) ;
}
printf( "temp is %c %d\n", temp, j );
*( b + j - n ) = temp;
}
/*
* this is especially.
*
*/
if ( m % n != 0 )
move_vector( b + m - n , n, n - m%n );
}
int
main()
{
char a[8] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
char b[12] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l' };
move_vector( a, 8, 3 );
int i;
for ( i = 0; i < 8; i++ )
printf( "%c\n", *( a + i ) );
printf( "b is .............\n" );
move_vector( b, 12, 3 );
for ( i = 0; i < 12; i++ )
printf( "%c\n", *( b + i ) );
exit( 0 );
}