Нужна ваша помощь. Необходимо реализовать CSR метод хранения симметричных разреженных матриц
Матрица считывается из файла matr, который выглядит следующим образом
7
9.0 0.0 0.0 3.0 1.0 0.0 1.0 
0.0 11.0 2.0 1.0 0.0 0.0 2.0 
0.0 2.0 10.0 2.0 0.0 0.0 0.0 
3.0 1.0 2.0 9.0 1.0 0.0 0.0 
1.0 0.0 0.0 1.0 12.0 0.0 1.0 
0.0 0.0 0.0 0.0 0.0 8.0 0.0 
1.0 2.0 0.0 0.0 1.0 0.0 8.0
где в 1ой строке указан размер матрицы
В результате должны получиться следующие 3 массива
AN: 9.0 3.0 1.0 1.0 11.0 2.0 1.0 2.0 10.0 2.0 9.0 1.0 12.0 1.0 8.0 8.0 
JA: 0.0 3.0 4.0 6.0 1.0 2.0 3.0 6.0 2.0 3.0 3.0 4.0 4.0 6.0 5.0 6.0 
IA: 0.0 4.0 8.0 10.0 12.0 14.0 15.0 16.0
Т.к матрица симметрична, то всю матрицу не нужно хранить, нужно только верхнюю треугольную построчно с диагональными элементами
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{int a;
int N=0;
int i,j,col=0;
float JA[100],IA[100];
float A[100][100];
FILE *file_f1=fopen("matr.txt", "rt");if (!file_f1) {cout << "No file"<<"\n";}
//файл чтения
fscanf(file_f1,"%d",&N); 
cout<<N<<"\n"<< endl;
   for(int i=0;i<N;i++)
    { for(int j=0;j<N;j++)
      {
       fscanf(file_f1,"%f",&A[i][j]);
      if ((A[i][j]!=0) && (i<=j))
      {   JA[j]=j;
           cout<<"JA    "<<JA[j]<<"\n"<< endl;
          col+=1;
            cout<<"AN   "<<A[i][j]<<"\n"<< endl;
      }   
      }
    }
cout<<"col  "<<col<<"\n"<< endl;
 
cin >> a;
fclose(file_f1);
   
cout << "Done..." << endl;
массивы AN и JA ищутся правильно. Как сформировать массив IA(номер, с которого в AN начинается новая строка?