CRS печать матрицы

eocron

Помогите с печатью матрицы которая записана в три вектора! Не могу понять как осуществить печать!
typedef struct MATRIX
{
        int m; 
        int n; 
        int nz; 
        int *value;
        int *column; 
        int *index; 
}Matrix;
 
Matrix* CreateMatrix(int m,int n, int nz)
{
      Matrix *mtx=(Matrix *)malloc(sizeof(Matrix));
      int i=0;
      mtx->m=m;
      mtx->n=n;
      mtx->nz=nz;
//////////////////////////////////
      mtx->value =(int *)malloc(sizeof(int)*nz);
      for(i=0;i<nz;i++)
      {
              mtx->value[i]=0;
      }
//////////////////////////////////
      mtx->column =(int *)malloc(sizeof(int)*nz);
      for(i=0;i<nz;i++)
      {
              mtx->column[i]=0;
      }
//////////////////////////////////
      mtx->index =(int *)malloc(sizeof(int)*(m+1));
      for(i=0;i< m+1;i++)
      {
              mtx->index[i]=0;
      }
      return mtx;
}
Вот структура и создание матрицы, которое я намалякал.
2 ответа

eocron

for(i=0;i< m+1;i++)
Что-то недопонял ... там точно нужно m+1 ?


eocron

Что-то недопонял ... там точно нужно m+1 ?
Да, а то последняя строка не будет определена - строки в индекс векторе задаются межэлементно, то есть 0 2 7 - будет значить что в первой строке два ненулевых элемента, а во второй пять. Могу скинуть перемножение матрицы CRS формата на вектор и считывание из исходной матрицы в файле, которое я сделал. У меня есть идея как это сделать, но на практике она фэйлится.