#include<stdio.h>
#define N 3
int main(void)
{
int h,i,j,k,x,y,moji;
double a[N][N+1];
printf("3元連立一次方程式を入力して下さい.\n");
for(i=0;i<N;i++){
moji='x';
for(j=0;j<N+1;j++){
if(j<N){
printf("%d行目の式の%cの係数を入力:",i+1,moji);
scanf("%lf",&a[i][j]);
moji++;
}
else{
printf("%d行目の式の右辺の数を入力:",i+1);
scanf("%lf",&a[i][j]);
}
}
putchar('\n');
}
printf("連立方程式\n");
for(i=0;i<N;i++){
moji='x';
for(j=0;j<N+1;j++){
if(j==N)
printf(" = ");
if(a[i][j]>0)
printf("+");
if(j<N){
printf("%.0f%c",a[i][j],moji);
moji++;
}
else
printf("%.0f\n",a[i][j]);
}
}
putchar('\n');
//前進消去
for(h=0;h<N;h++){
x=a[h][h];
for(i=0;i<N+1;i++)
a[h][i]=a[h][i]/x;
for(j=h+1;j<N;j++){
y=a[j][h];
for(k=0;k<N+1;k++)
a[j][k]=a[j][k] - a[h][k] * y;
}
}
//後退代入
for(i=N-1;i>0;i--)
for(j=i-1;j>=0;j--)
a[j][N] = a[j][N] - a[j][i] * a[i][N];
printf("解\n");
moji='x';
for(i=0;i<N;i++){
printf("%c = %f\n",moji,a[i][N]);
moji++;
}
return 0;
}
指摘お願い致します。