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

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

解決済みの質問

C++についての質問です

プログラミング初心者です
以下の通りに正方行列の積を求めるプログラムを作成したのですが、うまくいきません。
#include<stdio.h>

#define DTM 20

void InputMatrix(double[][DTM], int, char);
void PrintMatrix(double[][DTM], int, char);
void MatrixMulti(double[][DTM], double[][DTM], double[][DTM], int);

int main(void)
{
double matrixA[DTM][DTM];
double matrixB[DTM][DTM];
double matrixC[DTM][DTM];
int n;

printf("正方行列の積を求めるプログラムです\n");
printf("正方行列の次元を入れてください(<=20):");
scanf_s("%d", &n);
InputMatrix(matrixA, n, 'A');
InputMatrix(matrixB, n, 'B');
MatrixMulti(matrixA, matrixB, matrixC, n);

printf("\n行列 C =A×B\n");
PrintMatrix(matrixC, n, 'C');

return 0;
}
void InputMatrix(double a[][DTM], int n, char ch)
{
int i, j;
printf("行列 %cの入力\n", ch);
for (i = 0; i < n;i++)
{
for (j = 0;j < n;j++)
{
printf("%c[%d][%d] =", ch, i + 1, j + 1);
scanf_s("%lf", &a[i][j]);
}
}
}

void PrintMatrix(double a[][DTM], int n, char ch)
{
int i, j;
printf("行列 %c の出力\n", ch);
for (i = 0;i < n;i++)
{
for (j = 0;j < n;j++)
{
printf("%5.2f\t", a[i][j]);
}
printf("\n");
}
}

void MatrixMulti(double a[][DTM], double b[][DTM], double c[][DTM], int n)
{
int i, j, k;
for (i = 0;i < n;i++)
{
for (j = 0;j < n;j++)
{
c[i][j] = 0;
for (k = 0;k < n;k++)
{
c[i][j] =a[i][k] * b[k][j];
}
printf("%5.2f\t",c[i][j]);
}
printf("\n");
}
}

投稿日時 - 2019-07-28 14:23:06

QNo.9640001

困ってます

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

c[i][j] =a[i][k] * b[k][j];

c[i][j] +=a[i][k] * b[k][j];
の間違いだろう。

投稿日時 - 2019-07-28 15:01:54

お礼

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

投稿日時 - 2019-07-28 15:58:06

ANo.1

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

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

回答(1)

あなたにオススメの質問