Не понимаю почему происходит перезапись первого элемента в массиве B
Код:
// Method run
#include "stdafx.h"
#include "iostream"
#include <iomanip>
using namespace std;
void main()
{
int i, j, k;
const int N = 5;
float X[N], T[N][N + 1], y;
float A[N][N] =
{
2, -1, 0, 0, 0,
-3, 8, -1, 0, 0,
0, -5, 12, 2, 0,
0, 0, -6, 18, -4,
0, 0, 0, -5, 10
};
float B[N] =
{
-25, 72, -69, -156, 20
};
// Print SLAU and init extended matrix T[N][N + 1]
for (int i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
k = j;
T[i][j] = A[i][j];
cout << std::setw(4) << std::right << A[i][j];
}
T[i][k + 1] = B[i];
cout << " = " << B[i] << "\n";
}
// Method
A[0][1] = -(A[0][1] / A[0][0]);
B[0] = B[0] / A[0][0];
for (i = 1; i < N; i++)
{
y = A[i][i] + A[i][i - 1] * A[i - 1][i];
A[i][i + 1] = -(A[i][i + 1] / y);
B[i] = ( B[i] - A[i][i - 1] * B[i - 1] ) / y;
}
X[N - 1] = B[N - 1];
for (i = N - 1; i > 0; i--)
{
X[i - 1] = A[i - 1][i] * X[i] + B[i - 1];
}
// Print parameters Xn
cout << "\n";
for (int i = 0; i < N; i++)
{
cout << "X[" << i + 1 << "] = ";
printf("%.3f\n", X[i]);
}
cout << "\n";
}
Скрины при дебаггинге: