ここから本文です

行列A、Bの積を計算するプログラムを作成したのですが、9行目で「constant express...

iso********さん

2015/1/1615:18:27

行列A、Bの積を計算するプログラムを作成したのですが、9行目で「constant expression」というエラーがでていまいます。解決方法を教えてください。

#include <stdio.h>
int main(void)
{
int A[3][3]={{1,4,7},{2,5,8},{3,6,9}};
int B[3][3]={{1,4,2},{3,8,7},{5,0,6}};
int i,j,k;
for(i=0; i<3; i++){
for(j=0; j<3; j++){
int C[i][j]=0;
for(k=0; k<3; k++){
C[i][j] += A[i][k] * B[k][j];
}
}
}
printf("AB=\n");
for(i=0; i<3; i++){
printf("%d %d %d\n",C[i][0],C[i][1],C[i][2]);
}
return 0;
}

閲覧数:
64
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

isa********さん

2015/1/1616:01:12

他のお二方の補足です。

「 int c; 」 とかってのは、「宣言」と言って「変数の型 変数名;」という書式で 最初に 一回だけ 宣言します。

なので 今回のようなケースでは for などのループの中に あるのは ちょっとおかしいのです。

ループの前で「int C[3][3];」と宣言して、ループの中では 「C[i][j]=0;」と代入するだけです。

質問した人からのコメント

2015/1/17 14:26:36

笑う ありがとうございます。納得しました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

has********さん

2015/1/1615:28:25

int C[i][j]=0;
は文法的に正しくない。
更に最後から4行目のprintfで配列Cの内容をアクセスしようとしていますけど、スコープの関係でみることができません。

配列Cの定義を配列A、Bと同じ位置に移動させてください。

edo********さん

2015/1/1615:26:01

int C[i][j]=0;
一番最初に通ったときに、
int C[0][0]=0;
になるけど、何処で宣言してる?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる