Помогите найти ошибку метод Гаусса Си

помогите найти ошибку метод Гаусса Си
вот что я написал:

#include
#include
#include
//по столбцу

int main(int argc, char *argv[])
{
int m,n, j, i;
FILE *f1, *f2;
printf("Enter N: ");
scanf("%d", &n);
m = n+1;
double matrix[n][m];

for(i=0; i < n; i++){
for(j = 0; j < m; j++){
matrix[j] = rand();
}
}
f1 = fopen("1.txt", "w");
for(i=0; i < n; i++){
for(j = 0; j < m-1; j++){
fprintf(f1, " %lf", matrix[j]);
}
fprintf(f1, "n");
}
fclose(f1);

f2 = fopen("2.txt", "w");
for( i = 0; i < n; i++){
fprintf(f2, "%lf", matrix[n]);
fprintf(f2, "n");
}
fclose(f2);

for(i=0; i < n; i++){
for(j = 0; j < m; j++){
printf(" %lf", matrix[j]);
}
printf( "n");
}
//гаус
for(i = 1; i < n; i++){
for(int j = i; j < = n; j++){
matrix[j] = matrix[0]*matrix[0][j] + matrix[j];
}
}
printf("nn");
for(i=0; i < n; i++){
for(j = 0; j < m; j++){
printf(" %lf", matrix[j]);
}
printf( "n");
}

//обр. ход
double res[m];
double d;
res[n-1] = matrix[n-1][n-1]/ matrix[n-1][n];
for(i = n-2; i >=0; i--){
for(j = 0, d = 0; j < n-i-1; j++){
d += (res[n-j-1]* matrix[n-j-1]*(-1));
res =(matrix[n]+d) / matrix;
}
}

printf("nn");
for(i = 0; i < n; i++){
printf(" %lf", res);
}

return 0;
}

где здесь ошибка. Мне кажется в обратном обходу, но вот никак не могу найти. Помогите через 5 часов сдавать, мозг не варит. Пишу простой Гаусс а не Жордана.

  • Трудно так понять.
    Несколько советов:
    1) Выложите код на pastebin.com, чтобы можно было его нормально посмотреть.
    2) Выведите значения после прямого хода и проверьте, равны ли они тому, что должно получиться.
    3) Используйте отладчик.
  • Алгоритм Гаусса, насколько я понимаю, должен содержать тройной цикл, а не двойной.