/* an example of code that calculates the dot product and the cross product
   of two 3-vectors. The use of functions was not required for this assignment.
*/

#include <stdio.h>
#include <math.h>

#define N 3

main()
{

  double x[N],y[N],z[N], dotprod;
  int i;

  dotprod = 0.0;

  /* I've used two slightly different pieces of code to read in the vector
     components of x and y. The end result is the same. The latter requires
     less work if the value of N changes. 
  */

  printf("enter the 3 components of the 1st vector, separated by a space\n");
  if(scanf( "%lf %lf %lf", &x[0], &x[1], &x[2]) != 3)
	{
	  printf(" you must enter a number as the vector component\n");
	  exit(1);
	}

  printf("enter each component of the 2nd vector and hit return\n");
  for (i = 0; i<N; i++)
    {
      if(scanf( "%lf", &y[i]) != 1)
	{
	  printf(" you must enter a number as the vector component\n");
	  exit(1);
	}
    }

  /* now calculate the dot product of x and y */

  for( i = 0; i<N; i++)
    {
      dotprod += x[i]*y[i];
    }

  /* now calculate the cross product of x and y */

  z[0] = x[1]*y[2] - x[2]*y[1];
  z[1] = -( x[0]*y[2] - x[2]*y[0]);
  z[2] = x[0]*y[1] - x[1]*y[0];

  printf("\nthe dot product of the 2 vectors you entered is \n 
         %lf\n\n ", dotprod);
  printf("\nthe vector cross product of the 2 vector you entered is \n
          (%lf, %lf, %lf)\n\n ", z[0],z[1],z[2]);
}