ここから本文です

投票受付中の質問

お知らせベストアンサーにふさわしい回答に投票してください。
投票すると知恵コイン5枚プラスされます。
ベストアンサーに選ばれた回答に、最初に投票していれば知恵コイン10枚プラスされます。
  • 残り時間:
    21時間
  • 投票数:
    0票

C言語 配列について 問題 3×3行列を表す2つの3次元配列 mat1[3][3] = {{1,2,...

naoki672001さん

C言語 配列について

問題
3×3行列を表す2つの3次元配列
mat1[3][3] = {{1,2,3},{4,5,6},{4,3,1}}
mat2[3][3] = {{6,8,3},{5,3,2},{8,1,4}} をそれぞれプログラム中に宣言する。

3×3行列の積 mat1・mat2の解を別の3次元配列mat[3][3]に格納し、出力するプログラムを作成せよ。

<実行例>
40 17 19
97 53 46
47 42 22

この実行例になるよう、プログラムを組むことができません。
配列をよく理解できていないです。
プログラムと意味を詳しく教えて頂けると助かります。
よろしくお願います。

違反報告

回答

(2件中1〜2件)

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

 

doughnut_2012さん

定義通りに計算するだけです!

#include <stdio.h>
main(){
int mat1[3][3]={{1,2,3},{4,5,6},{4,3,1}};
int mat2[3][3] = {{6,8,3},{5,3,2},{8,1,4}};
int mat[3][3],i,j; /* i : 行, j : 列 */
for(i=0;i<3;i++)
for(j=0;j<3;j++){
/* mat[i][j] の計算 */
mat[i][j]=mat1[i][0]*mat2[0][j]+mat1[i][1]*mat2[1][j]+mat1[i][2]*mat2[2][j];
/* mat[i][j] の値の出力 */
printf("%2d%c",mat[i][j],(j==2)?'\n':' ');
}
}

この回答に投票する

k032yfさん

naoki672001さん

int main()
{
int mat1[3][3] = {{1,2,3},{4,5,6},{4,3,1}};
int mat2[3][3] = {{6,8,3},{5,3,2},{8,1,4}};
int mat[3][3];
int i,j,k,*p,*r,*t;
t=&mat[0][0];
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
r=&mat1[i][0];
p=&mat2[0][j];
*t=0;
for(k=0;k<3;++k)
{
*t +=*p**r++;
p+=3;
}
++t;
}
}
p=&mat[0][0];
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
printf("%4d",*p++);
}
printf("\n");
}
return 0;
}

この回答に投票する

どの回答もふさわしくない

PR
知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

18時23分現在

3160
人が回答!!

1時間以内に5,774件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する