みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語 行列の和

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);
}

投稿日時 - 2010-10-20 19:49:15

QNo.6263643

困ってます

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

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

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

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

という事でしょう。

投稿日時 - 2010-10-20 19:58:09

お礼

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

投稿日時 - 2010-10-20 20:21:56

ANo.1

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> 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},
になっています。

投稿日時 - 2010-10-20 19:59:57

お礼

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

投稿日時 - 2010-10-20 20:24:30

あなたにオススメの質問