#include <stdio.h>
#include <time.h>
#define N  3 
int main(void) {
    clock_t start, end;
    start = clock();
    float a[N][N+1] = {
    {5,-1,-1,0},
    { 2,1,-3,-5 },
    { 1,1,1 ,6} };    // The matrix
    //前進消去
    int i;
    float d = a[1][0] / a[0][0];
    for (i = 0; i <= 3; i++) {//forを使う上で上限がなかったので3までが上限なのでi<=3と書いた。
        a[1][i] = a[1][i] - a[0][i] * d;
        {
            printf("a[1][%d]=%fとなる\n", i,a[1][i]);
        }
    }
    float r;
    r = a[2][0] / a[0][0];
    for (i = 0; i <= 3; i++) {
        a[2][i] = a[2][i] - a[0][i] * r;
    }
    int I;
    for (I = 0; I <= 3; I++) {
        printf("a[2][%d]=%fとなる\n", I,a[2][I]);
        }
    float z;
    z= a[2][1] / a[1][1];
    int y; //iは1から3まで入るのでkに+1した形で入ってもらいiを利用する。kはforより3までとする。
    for (y = 0; y <= 3; y++) {
        a[2][y] = a[2][y] - a[1][y] * z;
        printf("a[2][%d]=%fとなる\n", y, a[2][y]);
    }
//前進消去終わり
//後退代入
    float g = a[2][3] / a[2][2];
    printf("Z=%f\n", g);
    float h;
    h = a[1][3] / a[1][1] - a[1][2] / a[1][1]* a[2][3] / a[2][2];
    printf("Y=%f\n", h);
    float j;
    j = h / a[0][0] + g / a[0][0];
    printf("X=%f\n", j);
    end = clock();
    printf("%f sec\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//後退代入終わりどうかよろしくお願いいたします。
またできるならば多元線形連立方程式のプログラムにできるのならばその過程も教えていただけるとありがたいです。