next up previous
: 前処理 : man_c5 : コンパイルと結果

内積

ここからは、いくつかのプログラムの例を見ながらさらなるCプログラミングの方法を説明していく。

この章では内積を計算するプログラムを例に前処理、配列について見ていく。 内容は、はじめに 2 つのベクトル vec1, vec2 に初期値を代入し、ベ クトル vec3 に計算結果を代入し、最後に結果を出力する。


scapro.c -------------------------------------------------------------
#include<stdio.h>

#define L 1
#define M 3
#define N 1

int main(){
  int i,j,k, sum;
  int vec1[L][M]={1,2,3};
  int vec2[M][N]={5,6,7};
  int vec3[L][N];

  for(i = 0; i < L; i++){
    for(j = 0; j < N; j++){
      sum = 0.;
      for(k = 0; k < M; k++){
	sum = sum+vec1[i][k]*vec2[k][j];
      }
      vec3[i][j] = sum;
    }
  }
  printf("vec1 = (%d, %d, %d) \n",vec1[0][0],vec1[0][1],vec1[0][2]);
  printf("vec2 = (%d, %d, %d) \n",vec2[0][0],vec2[1][0],vec2[2][0]);
  printf("vec1・vec2 = %d \n",vec3[0][0]);
}

実行結果 -------------------------------------------------------------

s1:~/c_text> gcc -o scapro scapro.c
s1:~/c_text> ./scapro
vec1 = (1, 2, 3) 
vec2 = (5, 6, 7) 
vec1・vec2 = 38 
s1:~/c_text> 

----------------------------------------------------------------------