dポイントプレゼントキャンペーン実施中!

#include <stdio.h>

#define S 10.0
#define L 10.0

void solve(int m,double a[][10],double f[]);

main()
{
double t,me[10][10],fe[10];
int i,x;

t=(S*L)/420;

me[0][0]=t*156;me[0][1]=t*22*L;me[0][2]=t*54;me[0][3]=t*(-13)*L;
me[1][0]=me[0][1];me[1][1]=t*4*L*L;me[1][2]=t*13*L;me[1][3]=t*(-3)*L*L;
me[2][0]=me[0][2];me[2][1]-me[1][2];me[2][2]=t*156;me[2][3]=t*(-22)*L;
me[3][0]=me[0][3];me[3][1]=me[1][3];me[2][3]=me[3][2];me[3][3]=t*4*L*L;

for(i=0;i<4;i++){
fe[i]=1.0;
}
x=4;

solve(x,me,fe);
}

void solve(int m,double a[][10],double f[])
{
/* m=number of unknowns */
int i,j,k;
double aa;

/* forward elimination */
for(i=0;i<m-1;i++){
for(j=i+1;j<m;j++){
aa=a[j][i]/a[i][i];
f[j]-=aa*f[i];
for(k=i+1;k<m;j++){
a[j][k]-=aa*a[i][k];
}
}
}

/* backward substitution */
f[m-1]/=a[m-1][m-1];
for(i=m-2;i>=0;i--){
for(j=i+1;j<m;j++){
f[i]-=a[i][j]*f[j];
}
f[i]/=a[i][i];
}
}
以上のようなプログラムについて、コンパイルはできるのですが、実行時に「セグメントエラー」と出てしまいます。たぶん配列の引渡しに原因があるようなのですが、どなたか詳しい原因(対処法)をご教授願いたいと思います。

A 回答 (1件)

とりあえず、どの箇所でエラーが出るのかくらいは調べましょう。



/* forward elimination */

for(k=i+1;k<m;j++)
このループが変だから。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!