Тема: Виправити помилки в коді
Не можу зробити правильно об'явлення в коді. Це фрагмент знаходження вільних членів. Будь ласка допоможіть виправити помилки.
void Gauss(double **X, double **A[N][N + 1], unsigned N, unsigned M) // вільні коєфіцієнти
{
double **a1 = new double*[N];
int r; // массив вільних членів
double temp;
int i, j, k; // робочі змінні
double ** B = new double*[N];
// копіювання в матрицю А
for (i = 0; i < N; i++)
{
B[i] = A[i][N]; // копіювання вільних членів
X[i] = 0;
}
// прямий хід
for (i = 0; i < N; i++)
{
if (A[i][i] != 0)
{
// обчислення з попередніх рядків
for (k = (i + 1); k < N; k++)
{
r = A[k][i] / A[i][i];
for (j = i; j < N; j++) A[k][j] -= A[i][j] * r;
B[k] -= B[i] * r;
}
}
else
{
// шукаемо елемент ненульовий
for (j = (i + 1); j < N; j++)
{
if (A[j][i] != 0) break;
}
// якщо не знайдено - рішень немає
if (j == N)
{
cout<<"rishennya neisnye\n";
exit(1);
}
else // якщо знайдено - міняємо місяцями
{
// матриця
for (k = i; k < N; k++)
{
temp = A[i][k];
A[i][k] = A[j][k];
A[j][k] = temp;
}
// права частина
temp = B[i];
B[i] = B[j];
B[j] = temp;
// зниження і на одиницю, щоб цикл повторював перевірку й попав в обчислення рядків з наступних
i--;
}
}
}
// зворотній хід
for (i = N; i >= 0; i--)
{
int s = 0;
for (j = (i + 1); j < N; j++) s += A[i][j] * X[j];
X[i] = (B[i] - s) / A[i][i];
}
// виведення трикутної матриці
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
cout << A[i][j] << " "<<"\n";
cout<< B[i]<<" "<<"\n";
}
}