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