1: /* matrix00add_func11.c */ 2: /* このプログラムは、動きません */ 3: #include 4: 5: /* 関数 print_mat のプロトタイプ宣言 */ 6: void print_mat( int row, int col, float x[ row ][ col ] ); 7: 8: /* 関数 add_mat のプロトタイプ宣言 */ 9: void add_mat( int, int, float *, float *, float * ); 10: 11: 12: int main( void ){ 13: 14: /* 変数の宣言 */ 15: int row, col; 16: int rowa, cola; 17: int rowb, colb; 18: int rowc, colc; 19: 20: row = 2, col = 3; 21: rowa = row, cola = col; 22: rowb = row; colb = col; 23: rowc = row; colc = col; 24: 25: /* 配列変数の宣言 */ 26: float a[ rowa ][ cola ]; 27: float b[ rowb ][ colb ]; 28: float c[ rowc ][ colc ]; 29: 30: /* 配列の初期化 */ 31: a[ 0 ][ 0 ] = 2.3; a[ 0 ][ 1 ] = 0.2; a[ 0 ][ 2 ] = 0.1; 32: a[ 1 ][ 0 ] = -0.3; a[ 1 ][ 1 ] = 0.0; a[ 1 ][ 2 ] = -0.5; 33: 34: b[ 0 ][ 0 ] = -1.0; b[ 0 ][ 1 ] = -0.1; b[ 0 ][ 2 ] = 1.8; 35: b[ 1 ][ 0 ] = 0; b[ 1 ][ 1 ] = 2.2; b[ 1 ][ 2 ] = 2.5; 36: 37: /* 行列の和 c = a + b を計算 */ 38: add_mat( row, col, a, b, c ); 39: 40: /* 行列 a の表示 */ 41: printf( " a =\n" ); 42: print_mat( rowa, cola, a ); 43: printf( "\n" ); 44: 45: /* 行列 b の表示 */ 46: printf( " b =\n" ); 47: print_mat( rowb, colb, b ); 48: printf( "\n" ); 49: 50: /* 行列 c = a + b の表示 */ 51: printf( " c = a + b\n" ); 52: print_mat( rowc, colc, c ); 53: printf( "\n" ); 54: 55: return 0; 56: 57: } 58: 59: 60: /* 関数 print_mat */ 61: void print_mat( int row, int col, float x[ row ][ col ] ){ 62: 63: /* カウンタ用変数の宣言 */ 64: int i, j; 65: 66: /* 行列の表示 */ 67: for ( i = 0; i < row; i = i + 1 ) { 68: printf( " [" ); 69: for( j = 0; j < col; j = j + 1 ) { 70: 71: printf( " %5.2f ", x[ i ][ j ] ); 72: 73: } 74: printf( "]\n" ); 75: } 76: 77: } 78: 79: /* 関数 add_mat */ 80: void add_mat( int row, int col, float *x, float *y, float *z ){ 81: 82: /* カウンタ用変数の宣言 */ 83: int i, j; 84: 85: /* 行列の和を計算 */ 86: for ( i = 0; i < row; i = i + 1 ) { 87: for ( j = 0; j < col; j = j + 1 ) { 88: 89: z[ i ][ j ] = x[ i ][ j ] + y[ i ][ j ]; 90: 91: } 92: } 93: 94: }