- ベストアンサー
C言語の行列の積の計算で最大値と最小値が正しくない原因は?
- C言語の課題で行列AとBの積Cを計算し、最大値と最小値を表示するプログラムが正しく動作しない。
- プログラムを実行するとCの結果は正しいが、最大値と最小値が異なる。
- どうして最大値と最小値が正しく表示されないのか原因が不明なので、解決策を教えて欲しい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#include <stdio.h> int main(void) { int i, j, k; int a[2][2] = { {1,8}, {3,9} }; int b[2][2] = { {4,7}, {2,1} }; int c[2][2] = {0}; int max, min; puts( "matrix A =" ); for(j=0; j<2; j++){ for(k=0; k<2; k++) { printf( "%3d" , a[j][k]); } printf( "\n" ); } puts( "matrix B =" ); for(k=0; k<2; k++){ for(i=0; i<2; i++){ printf( "%3d" , b[k][i]); } printf( "\n" ); } puts( "AとBの積\nmatrix C ="); for(j=0; j<2; j++) { for(i=0; i<2; i++) { for(k=0; k<2; k++) c[j][i] += a[j][k]*b[k][i]; printf( " %3d" , c[j][i]); if( j==0 && i==0 ){ max = c[j][i]; min = c[j][i]; } if( max < c[j][i] ) max = c[j][i]; if( min > c[j][i] ) min = c[j][i]; } printf( "\n" ); } printf( "行列Cの最大値 : %d\n", max); printf( "行列Cの最小値 : %d\n", min); return (0); }
その他の回答 (1)
- m0r1_2006
- ベストアンサー率36% (169/464)
max = c[0][0]; min = c[0][0]; とりあえず この2行 コメントアウト 何か {} の対応がおかしな気がする.
お礼
ご指摘ありがとうございます max = c[0][0]; min = c[0][0]; これは余計なものでした。 また{}の括り方もおかしくなっていました 無事コンパイルし結果が正しくなりました。