Проблема в умножении матриц

У меня почему то проблема в функции Multimass , она должна умножить обратную матрицу на матрицу B и получить столбец X , т.е столбец решений, но у меня считается только первый элемент а остальные нули

#include <iostream>
#include <math.h>
#include <ctime>
#include <iomanip>
using namespace std;
#define clean system("cls");
#define next cout<<endl;
void Multimass(double **T,double **B,double **X,int size,int size1)
{
    for (int i = 0; i < size; i++) {
        for (int j = 0; j <size1; j++)
        {
            X[i][j] = 0;
            for (int k = 0; k < size; k++)
            {
                X[i][0] += T[i][j] * B[j][i];
            }
        }
    }
    
}
void Showmtx(double **A,int size,int size1)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size1; j++)
        {
            cout << fixed << setprecision(4) << setw(8) << A[i][j] << " ";
        }
        next
    }
}
int Gaussmethod(double** A,double **B, double** T, int size)
{
    double eps = 1e-10; int det = 1;
    double** X = new double* [size];//матрица X(матрица решений)
    for (int i = 0; i < size; i++)
    {
        X[i] = new double[1];
    }
    for (int i = 0; i < size; i++)
    {
        int imax = i;
        for (int j = 0; j < size; j++) { if (fabs(A[j][i]) > fabs(A[imax][i])) imax = j; }
        if (fabs(A[imax][i] < eps)) { cout << "det(A)=0;Ending the programm"; return 0; }

        if (i != imax)
        {
            for (int j = 0; j < size; j++) { swap(A[i][j], A[imax][j]); swap(T[i][j], T[imax][j]); }
        }
        double t = A[i][i];
        det *= t;
        for (int j = 0; j < size; j++)
        {
            A[i][j] /= t; T[i][j] /= t;

        }
        for (int j = 0; j < size; j++)
        {
            if (j == i) continue;
            for (int k = 0; k < size; k++)
            {
                A[j][k] -= A[i][k] * A[j][i]; T[j][k] -= T[i][k] * T[j][i];
            }
        }
    }
    cout << "Det(A)=" << det << endl;
    cout << "Основная матрица" << endl;
    Showmtx(A, size, size); next
    cout << "Обратная матрица" << endl;
    Showmtx(T, size, size); next
    cout << "Столбец решений" << endl;
    Multimass(T, B,X,size,1);
    cout << "Обратная матрица" << endl; Showmtx(T, size, size);next
    cout << "Матрица B" << endl; Showmtx(B, size,1);
    Multimass(T, B, X, size, 1);
    Showmtx(X, size, 1);
}
int main()
{
    setlocale(LC_ALL, "rus");
    int size; int choice;
     cout << "\t\t\t\tВведите размерность матрицы" << endl;
     cin >> size;
     srand(time(NULL));
     double** A = new double* [size];//матрица A(матрица size * size)
     for (int i = 0; i < size; i++)
     {
         A[i] = new double[size];
     }
     double** B = new double* [size];//матрица B(матрица size * 1)
     for (int i = 0; i < size; i++)
     {
         B[i] = new double[1];
     }
     double** T = new double* [size];//матрица T(единичная)
     for (int i = 0; i < size; i++)
     {
         T[i] = new double[size];
     }
     
     cout << "Ввод значений матрицы А и В \n1)Автоматически\n2)Вручную" << endl;
     cin >> choice;
     switch (choice)
     {
     case 1:
     {
         for (int i = 0; i < size; i++) {
             for (int j = 0; j < size; j++)
             {
                 A[i][j] = rand() % 20;
             }
             next;
         }
        
         for (int i = 0; i < size; i++)
         {
             B[i][0] = rand() % 20;
         }
         break;
     }
     case 2:
     {
         for (int i = 0; i < size; i++) 
         {
             for (int j = 0; j < size; j++)
             {
                 cout << "A[ " << i << "," << j << " ]= ";
                 cin >> A[i][j];
             }

         }
         for (int i = 0; i < size; i++)
         {
             cout << "B[" << i << "][" << 0 << "]= "; cin >> B[i][0];
         }
         next
         break;
     }
     }
     for (int i = 0; i < size; i++)
     {
         for (int j = 0; j < size; j++)
         {
             if (i == j) { T[i][j] = 1; }
             else { T[i][j] = 0; }
         }
     }
     Gaussmethod(A,B,T,size);
 
 
     return 0;
 }

Ответы (0 шт):