• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行列の積を計算するプログラムがうまくいきません)

行列の積を計算するプログラムがうまくいかない

このQ&Aのポイント
  • 行列の積を計算するプログラムが正しく動作しないようです。
  • 行列Aと行列Bをファイルから読み込み、その積Cを計算する際に問題が発生しています。
  • プログラムの修正が必要なようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

(「読み込み」部分についてのみのアドバイス) #1補足>どのようにすればよいのでしょうか? 可変個のデータなので for文で回すのがよいかと。 下の2つの関数を、n, m を読み込んだ後で、呼び出して・・。 void DataInput( FILE *fp1, int a[][ COL ], int b[][ ROW ], int n, int m ) { int i, j; for( i = 0; i < n; i++ ){ for( j = 0; j < m; j++ ){ fscanf( fp1, "%d", &a[ i ][ j ] ); } } for( i = 0; i < m; i++ ){ for( j = 0; j < n; j++ ){ fscanf( fp1, "%d", &b[ i ][ j ] ); } } } void DataCheck( int a[][ COL ], int b[][ ROW ], int n, int m ) { int i, j; for( i = 0; i < n; i++ ){ for( j = 0; j < m; j++ ){ printf( "%3d", a[ i ][ j ] ); } printf( "\n" ); } for( i = 0; i < m; i++ ){ for( j = 0; j < n; j++ ){ printf( "%3d", b[ i ][ j ] ); } printf( "\n" ); } }

rprkion
質問者

お礼

無事できました! ありがとうございました!

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> fscanf(fp1,"%d %d",&a[i][j],&b[i][j]); このときの,i,jはどうなってますか? この1行を追加しただけ、なら、「i,jを変えながら全部読み込む」なんて機能はありません。読み込むべきi,jを指定するようにしましょう。 あとデータは 3 4 ← A:3行4列、B:4行3列 1 2 3 4 ← Aの1行目 2 3 4 5 ← Aの2行目 3 4 5 6 ← Aの3行目 1 2 3 ← Bの1行目 2 3 4 ← Bの2行目 3 4 5 ← Bの3行目 4 5 6  ← Bの4行目 ということでしょうか?それだと、aを全部読み込み→bを全部読み込みとなるようにする必要があるため、 「fscanf(fp1,"%d %d",&a[i][j],&b[i][j]);」とはなりません。 void MatrixProduct(int a[][COL],int b[][ROW],int c[][ROW],int n,int m ) 今回、ROW=COL=10なので問題にはなりませんが、ROWとCOLを間違えています。 main中の宣言を確認してください

rprkion
質問者

お礼

ありがとうございました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

正しく読み込めてるんですか?

rprkion
質問者

お礼

ありがとうございました!

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

行列A,Bを読みこんでいる箇所が無いように見えるのですが

rprkion
質問者

お礼

ありがとうございました!

rprkion
質問者

補足

fscanf(fp1,"%d %d",&a[i][j],&b[i][j]); を入れてみてうまくいかなかったんですけど どのようにすればよいのでしょうか?