電子書籍の厳選無料作品が豊富!

C言語 行列の和

ご覧いただき有難うございます。
久しぶりにC言語の復習をしようと簡単な行列の計算を書いてみたのですが、思うような結果になりませんでした。
昨日から考えていたのですが、どこに間違いがあるのか発見できませんでした。
アドバイス等宜しくお願いいたします。

>環境
OS:Windows XP(32bit),Windows 7(64bit)
コンパイラ:Visual Studio C++ 2010 Express (付属のコマンドプロンプ使用)

>期待する結果
7 5 7
9 6 8

>出力された結果
7 8 0
0 0 0

>ソースコード
#include <stdio.h>

int main(void){
int i,j,
ma[2][3] = {(1,2,3),(4,5,6)},
mb[2][3] = {(6,3,4),(5,1,2)},
mc[2][3] = {0};

for(i=0;i<2;i++){
for(j=0;j<3;j++){
mc[i][j] = ma[i][j] + mb[i][j];
}
}

for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%3d",mc[i][j]);
}
putchar('\n');
}
return (0);
}

A 回答 (2件)

配列の初期化方法が間違ってますね。



想定しているのは、おそらく

int ma[][] = {{1, 2, 3}, {4, 5, 6}};
int mb[][] = {{6, 3, 4}, {5, 1, 2}};
int mc[2][3];

という事でしょう。
    • good
    • 0
この回答へのお礼

完全に見落としていました。
ありがとうございました。

お礼日時:2010/10/20 20:21

> ma[2][3] = {(1,2,3),(4,5,6)},


> mb[2][3] = {(6,3,4),(5,1,2)},

()でくくられた中が、カンマ演算子と解釈され、実質
> ma[2][3] = {3,6},
> mb[2][3] = {4,2},
になっています。
    • good
    • 0
この回答へのお礼

計算式に意識がいっており、カンマ演算子は考えてもいませんでした。
ありがとうございました。

お礼日時:2010/10/20 20:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!