#include <stdio.h>

void normal(double *a, double *b, int n);
double mag(double *a, int n);
void print_vector(double *a, int n);

int main()
{
	double a[] = {1.1, 2.0, 3.5};
	double b[3];
	int n;

	n = sizeof(a)/sizeof(a[0]);
	printf("ベクトルaの要素数は%dです。\n", n);

	printf("ベクトルaの成分は\n");
	print_vector(a, n);

	printf("ベクトルaの大きさは%lfです。\n", mag(a, n));

	printf("ベクトルaを大きさ1に規格化した成分は\n");
	normal(a, b, n);
	print_vector(b, n);

	printf("ベクトルbの大きさは%lfです。\n", mag(b, n));

	return 0;
}

void normal(double *a, double *b, int n)
{
	double v;
	int i;

	v = mag(a, n);
	for (i = 0; i < n; i++) {
		b[i] = a[i] / v;
	}
}

double mag(double *a, int n)
{
	double v = 0.0;
	int i;

	for (i = 0; i < n; i++) {
		v += a[i] * a[i];
	}
	return pow(v, 0.5);
}

void print_vector(double *a, int n)
{
  int i;

  for(i = 0; i < n;  ++i)
   printf("%lf  ", a[i]);

  printf("\n");
}
