fork download
  1. #include <stdio.h>
  2.  
  3. void normal(double *a, double *b, int n);
  4. double mag(double *a, int n);
  5. void print_vector(double *a, int n);
  6.  
  7. int main()
  8. {
  9. double a[] = {1.1, 2.0, 3.5};
  10. double b[3];
  11. int n;
  12.  
  13. n = sizeof(a)/sizeof(a[0]);
  14. printf("ベクトルaの要素数は%dです。\n", n);
  15.  
  16. printf("ベクトルaの成分は\n");
  17. print_vector(a, n);
  18.  
  19. printf("ベクトルaの大きさは%lfです。\n", mag(a, n));
  20.  
  21. printf("ベクトルaを大きさ1に規格化した成分は\n");
  22. normal(a, b, n);
  23. print_vector(b, n);
  24.  
  25. printf("ベクトルbの大きさは%lfです。\n", mag(b, n));
  26.  
  27. return 0;
  28. }
  29.  
  30. void normal(double *a, double *b, int n)
  31. {
  32. double v;
  33. int i;
  34.  
  35. v = mag(a, n);
  36. for (i = 0; i < n; i++) {
  37. b[i] = a[i] / v;
  38. }
  39. }
  40.  
  41. double mag(double *a, int n)
  42. {
  43. double v = 0.0;
  44. int i;
  45.  
  46. for (i = 0; i < n; i++) {
  47. v += a[i] * a[i];
  48. }
  49. return pow(v, 0.5);
  50. }
  51.  
  52. void print_vector(double *a, int n)
  53. {
  54. int i;
  55.  
  56. for(i = 0; i < n; ++i)
  57. printf("%lf ", a[i]);
  58.  
  59. printf("\n");
  60. }
  61.  
Success #stdin #stdout 0.01s 1676KB
stdin
Standard input is empty
stdout
ベクトルaの要素数は3です。
ベクトルaの成分は
1.100000  2.000000  3.500000  
ベクトルaの大きさは4.178516です。
ベクトルaを大きさ1に規格化した成分は
0.263251  0.478639  0.837618  
ベクトルbの大きさは1.000000です。