1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| t_adjacencyMatrix *getAdjacencyMatrixStructure( t_csv *csv )
{
/* Création de la structure de stockage des données */
t_adjacencyMatrix *adjacencyMatrix = createAdjacencyMatrixStructure( csv->line-csv->firstDataLine+1 );
/* La boucle commence à la 4ème ligne dans le fichier csv soit la 3ème ligne dans le tableau */
size_t i_start = csv->firstDataLine-1;
size_t atoiv = 0;
/* On parcourt chaque ligne de la matrice d'adjacence */
size_t i;
for ( i=i_start ; i< csv->line ; i++ )
{
/* Chaine de caractères pour stocker le sommet (colonne) dont le sommet courant (ligne) est adjacent */
char valueIsString[5];
/* Variable pour compter le déplacement dans valueIsString */
size_t offset = 0;
/* Pour chaque sommet, on regarde les sommets qui lui sont adjacents */
size_t size = stringLength(csv->spreadSheet[i][csv->adjacencyDataRow-1])+1;
printf("\n size = %d", size);
//getchar();
size_t j;
for ( j=0 ; j<size ; j++ )
{
if ( csv->spreadSheet[i][csv->adjacencyDataRow-1][j] != ',' )
{
valueIsString[offset] = csv->spreadSheet[i][csv->adjacencyDataRow-1][j];
}
if ( csv->spreadSheet[i][csv->adjacencyDataRow-1][j] == ',' || csv->spreadSheet[i][csv->adjacencyDataRow-1][j] == '\0')
{
valueIsString[offset] = '\0';
offset=-1;
atoiv = atoi(valueIsString)-1;
//printf("\n %s %d %d", valueIsString, i-i_start, atoi(valueIsString)-1);
adjacencyMatrix->matrix[i-i_start][atoi(valueIsString)-1] = 1;
}
offset++;
}
}
/* On renvoie la structure */
return adjacencyMatrix;
} |