# include void version1 ( ); void version2 ( ); int main ( ) { version1 ( ); version2 ( ); return 0; } void version1 ( ) { int i; int j; float x_old[5] = { 1.0, 1.0, 2.0, 2.0, 10.0 }; float x_new[5]; for ( i = 1; i <= 10; i++ ) { // // New data. // x_new[0] = x_old[0]; for ( j = 1; j < 4; j++ ) { x_new[j] = x_old[j] + 0.1 * ( x_old[j-1] - 2 * x_old[j] + x_old[j+1] ); } x_new[4] = x_old[4]; // // Update. // for ( j = 0; j < 5; j++ ) { x_old[j] = x_new[j]; } } // // Print final result. // printf ( "\n" ); printf ( "Version 1 final result:\n" ); printf ( "\n" ); for ( j = 0; j < 5; j++ ) { printf ( " %g", x_old[j] ); } printf ( "\n" ); return; } void version2 ( ) { int i; int j; float *new; float *old; float *temp; float x1[5] = { 1.0, 1.0, 2.0, 2.0, 10.0 }; float x2[5]; // // Where is the "old" information initially? // old = x1; new = x2; for ( i = 1; i <= 10; i++ ) { // // New data. // new[0] = old[0]; for ( j = 1; j < 4; j++ ) { new[j] = old[j] + 0.1 * ( old[j-1] - 2 * old[j] + old[j+1] ); } new[4] = old[4]; // // Swap the pointers. // temp = old; old = new; new = temp; } // // Print final result. // printf ( "\n" ); printf ( "Version 2 final result:\n" ); printf ( "\n" ); for ( j = 0; j < 5; j++ ) { printf ( " %g", old[j] ); } printf ( "\n" ); return; }