行列の積を関数を使って求める・・?
2つの行列の行と列を入力し、積を計算するプログラムを関数を使って書きたいのですが、上手く行きません。どこをどのように直したらよいか教えてください!お願いします!!
以下が私が書いたプログラムです。
#include<stdio.h>
#define NUMBER 10
int first(int x1,int x2,int y1,int y2,int i,int j,int k)
{
int a[NUMBER][NUMBER] = {0};
int b[NUMBER][NUMBER] = {0};
int c[NUMBER][NUMBER] = {0};
do{
printf("2つの行列の行と列を入力してください\n");
scanf("%d", &x1); scanf("%d", &x2);
scanf("%d", &y1); scanf("%d", &y2);
if(x1 != y2){
printf("行列の積は計算できません\n");
}
}while(x1 != y2);
printf("行列Aの要素を入力してください\n");
for(i=0; i<x1; i++){
for(j=0; j<x2; j++)
scanf("%d", &a[i][j]);
}
printf("行列Bの要素を入力してください\n");
for(j=0; j<y1; j++){
for(k=0; k<y2; k++)
scanf("%d", &b[j][k]);
}
}
int second(int x1,int x2,int y1,int y2,int i,int j,int k)
{
int a[NUMBER][NUMBER] = {0};
int b[NUMBER][NUMBER] = {0};
int c[NUMBER][NUMBER] = {0};
for(i=0; i<x1; i++){
for(k=0; k<y2; k++){
for(j=0; j<x2; j++)
c[i][k] = c[i][k] + a[i][j]*b[j][k];
}
}
for(i=0; i<x2; i++){
for(k=0; k<y2; k++)
printf("%3d", c[i][k]);
printf("\n");
}
}
int main(void)
{
int a[NUMBER][NUMBER] = {0};
int b[NUMBER][NUMBER] = {0};
int c[NUMBER][NUMBER] = {0};
printf("行列の積を計算します\n %d\n", first(x1,x2,y1,y2,i,j,k));
printf("行列Aと行Bの積は\n %3d",second(x1,x2,y1,y2,i,j,k));
}
お礼
非常に詳しい途中計算をしていただきありがとうございました。 問題を解決することがでいました。