コード内ではY=X^2としてYを出力しようとしています。
//n×n正方行列Aに対して、Aのk乗を求めるプログラム
#include <stdio.h>
#define N 5
void Input_matrix(float (*X)[N],int n) //2次元配列のポインタ。後ろのほうしか必要じゃない
{
int i=0,j=0;
for(;i<n;i++)
{
for(;j<n;j++)
{
printf("行列Aの%d行%d列成分の値を入力してください\n",i+1,j+1);
scanf("%f",&X[i][j]);
}
}
return ;
}
void Multiply_matrix(float (*X)[N],float (*Y)[N],int n)
{
int i=0,j=0,k=0;
for(;i<n;i++)
{
for(;j<n;j++)
{
for(;k<n;k++)
{
Y[i][j]+=X[i][k]*X[k][j];
}
}
}
return ;
}
int main(void)
{
int i=0,j=0;
float X[N][N],Y[N][N];
int n=0;
printf("n(<=5)を決めてください。\nn=");
scanf("%d\n",&n);
if(n>5)
{
printf("エラー:n<=5となるnを入力してください\n");
return (-1);
}
Input_matrix(X,n);//行列の入力
Multiply_matrix(X,Y,n);//行列の計算
for(;i<n;i++)
{
for(;j<n;j++)
{
printf("行列Aの%d行%d列成分は…%f\n",i+1,j+1,Y[i][j]);
}
}
return 0;
}
windowsで実行してみるとうまくいきません。。。
おそらくLinaxでもうまくいきません。
どこがおかしいのでしょう?
エラーはないのですが、実行結果が明らかにおかしいです・・・><
まだC初心者から脱していないのでできるだけ訂正箇所、理由など詳しくお願いしたいです・・・><