# include # include float vector_angle ( int n, float x[], float y[] ); float vector_dot ( int n, float x[], float y[] ); float vector_norm ( int n, float x[] ); int main ( void ) { float degrees; int i; int n; float pi = 3.14159265; float radians; float x_dot_y; float x_norm; float y_norm; printf ( "Enter vector dimension n: " ); scanf ( "%i", &n ); // // We have to wait til we now the value of N in order to declare // the vectors X and Y as "VLA's": // float x[n]; float y[n]; // // We have to read in the entries one at a time. // printf ( "Enter the %i values of vector X: ", n ); for ( i = 0; i < n; i++ ) { scanf ( "%f", &x[i] ); } printf ( "Enter the %i values of vector Y: ", n ); for ( i = 0; i < n; i++ ) { scanf ( "%f", &y[i] ); } x_norm = vector_norm ( n, x ); y_norm = vector_norm ( n, y ); printf ( " X norm is %g\n", x_norm ); printf ( " Y norm is %g\n", y_norm ); x_dot_y = vector_dot ( n, x, y ); printf ( " X dot Y is %g\n", x_dot_y ); radians = vector_angle ( n, x, y ); degrees = radians * 180.0 / pi; printf ( " Angle is %g radians, %g degrees\n", radians, degrees ); return 0; } float vector_angle ( int n, float x[], float y[] ) { float c; int i; float value; c = vector_dot ( n, x, y ) / vector_norm ( n, x ) / vector_norm ( n, y ); value = acos ( c ); return value; } float vector_dot ( int n, float x[], float y[] ) { int i; float value; value = 0.0; for ( i = 0; i < n; i++ ) { value = value + x[i] * y[i]; } return value; } float vector_norm ( int n, float x[] ) { int i; float value; value = 0.0; for ( i = 0; i < n; i++ ) { value = value + x[i] * x[i]; } value = sqrt ( value ); return value; }