2022-06-01 12:32:04 +02:00
|
|
|
#include "getArray.h"
|
|
|
|
#include "fileGestion.h"
|
2022-06-14 18:01:52 +02:00
|
|
|
#include "initialParameters.h"
|
2022-06-03 17:02:49 +02:00
|
|
|
//#include <string.h>
|
2022-06-01 12:32:04 +02:00
|
|
|
|
2022-06-16 14:35:02 +02:00
|
|
|
long **getlongArray(int N, int M) /* Allocate the array */
|
2022-06-01 12:32:04 +02:00
|
|
|
{
|
|
|
|
/* Check if allocation succeeded. (check for NULL pointer) */
|
|
|
|
int i;
|
2022-06-03 17:02:49 +02:00
|
|
|
long **array;
|
|
|
|
array = (long **) malloc(N*sizeof(long *));
|
2022-06-01 12:32:04 +02:00
|
|
|
for(i = 0 ; i < N ; i++)
|
2022-06-03 17:02:49 +02:00
|
|
|
array[i] = (long *) malloc( M*sizeof(long) );
|
2022-06-01 12:32:04 +02:00
|
|
|
return array;
|
|
|
|
}
|
|
|
|
|
2022-06-16 14:35:02 +02:00
|
|
|
double **getDoubleArray(int N, int M) /* Allocate the array */
|
|
|
|
{
|
|
|
|
/* Check if allocation succeeded. (check for NULL pointer) */
|
|
|
|
int i;
|
|
|
|
double **array;
|
|
|
|
array = (double **) malloc(N*sizeof(double *));
|
|
|
|
for(i = 0 ; i < N ; i++)
|
|
|
|
array[i] = (double *) malloc( M*sizeof(double));
|
|
|
|
return array;
|
|
|
|
}
|
|
|
|
|
2022-06-10 17:22:01 +02:00
|
|
|
void fillArrayWithRawData(char *rawDataFileName,long** p, int N, int M) {
|
2022-06-01 12:32:04 +02:00
|
|
|
int i, j;
|
2022-06-03 17:02:49 +02:00
|
|
|
char *buffer;
|
|
|
|
size_t bufsize = 200;
|
|
|
|
buffer = (char *)malloc(bufsize * sizeof(char));
|
|
|
|
char* token;
|
2022-06-01 12:32:04 +02:00
|
|
|
|
2022-06-10 17:22:01 +02:00
|
|
|
FILE *f = fopen(rawDataFileName,"r");
|
2022-06-13 17:11:16 +02:00
|
|
|
|
2022-06-03 17:02:49 +02:00
|
|
|
for(i = 0 ; i < N ; i++){
|
|
|
|
if (!getline(&buffer, &bufsize, f)) break; // condition d'arret de la boucle si fichier fini
|
|
|
|
j = 0;
|
|
|
|
while((token = strsep(&buffer,",")) != NULL){ // séparation valeur par virgule initiale : csv
|
|
|
|
p[i][j] = atoi(token);
|
|
|
|
j++;
|
|
|
|
}
|
2022-06-01 12:32:04 +02:00
|
|
|
}
|
2022-06-10 17:22:01 +02:00
|
|
|
fclose(f);
|
2022-06-13 17:11:16 +02:00
|
|
|
|
2022-06-01 12:32:04 +02:00
|
|
|
}
|
2022-06-09 17:34:24 +02:00
|
|
|
/**
|
|
|
|
* @brief print all the element of a bidimensionnal array p of shape : N x M
|
|
|
|
*/
|
2022-06-03 17:02:49 +02:00
|
|
|
void printArrayData(long** p, int N, int M) {
|
2022-06-01 12:32:04 +02:00
|
|
|
int i, j;
|
2022-06-03 17:02:49 +02:00
|
|
|
for(i = 0 ; i < N ; i++){
|
2022-06-09 17:34:24 +02:00
|
|
|
printf("line n°%d : " , i);
|
|
|
|
for(int j = 0 ; j < M ; j++){
|
2022-06-17 17:38:53 +02:00
|
|
|
printf("%ld , " , p[i][j]);
|
2022-06-09 17:34:24 +02:00
|
|
|
if(j==(M-1)) printf("\n");
|
2022-06-03 17:02:49 +02:00
|
|
|
}
|
2022-06-09 17:34:24 +02:00
|
|
|
}
|
2022-06-01 12:32:04 +02:00
|
|
|
}
|
2022-06-09 17:34:24 +02:00
|
|
|
/**
|
|
|
|
* @brief verify if all the element of an array are not NULL, return
|
|
|
|
*
|
2022-06-14 10:46:12 +02:00
|
|
|
* @param p array to check
|
|
|
|
* @param N number of rows in p
|
|
|
|
* @param M number of columns in p
|
|
|
|
* @return true if the array contaign no NULL element
|
|
|
|
* @return false if at least one element is null
|
2022-06-09 17:34:24 +02:00
|
|
|
*/
|
2022-06-14 18:01:52 +02:00
|
|
|
bool checkArrayFullyFill(long **p, int N){
|
2022-06-07 14:28:32 +02:00
|
|
|
for(int i = 0 ; i < N ; i++){
|
2022-06-09 17:56:45 +02:00
|
|
|
if(p[i][0] == '\0'){ return false; }
|
2022-06-07 14:28:32 +02:00
|
|
|
}
|
2022-06-09 17:56:45 +02:00
|
|
|
return true;
|
2022-06-07 14:28:32 +02:00
|
|
|
}
|
|
|
|
|
2022-06-14 10:46:12 +02:00
|
|
|
/**
|
|
|
|
* @brief free memory allocate to an array p
|
|
|
|
*
|
|
|
|
* @param p array to free memory
|
|
|
|
* @param N number of rows in array
|
|
|
|
*/
|
2022-06-03 17:02:49 +02:00
|
|
|
void freeArray(long **p, int N) {
|
2022-06-15 10:49:21 +02:00
|
|
|
for(int i = 0 ; i < N ; i++){
|
2022-06-01 12:32:04 +02:00
|
|
|
free(p[i]);
|
2022-06-15 10:49:21 +02:00
|
|
|
}
|
2022-06-01 12:32:04 +02:00
|
|
|
free(p);
|
|
|
|
}
|
|
|
|
|
2022-06-14 10:46:12 +02:00
|
|
|
/**
|
|
|
|
* @brief Get the Raw Data Array object
|
|
|
|
*
|
|
|
|
* @param rawDataFileName name of the file to use to file the array
|
|
|
|
* @param N numbers of rows to have i the array
|
|
|
|
* @param M numbers of columns to have i the array
|
|
|
|
* @return long** the array fill with raw data
|
|
|
|
*/
|
2022-06-14 18:01:52 +02:00
|
|
|
long **getRawDataArray(char* rawDataFileName){
|
2022-06-03 17:02:49 +02:00
|
|
|
long **p;
|
2022-06-16 17:05:12 +02:00
|
|
|
p = getlongArray(nRowRawData, nCol);
|
|
|
|
fillArrayWithRawData(rawDataFileName,p ,nRowRawData, nCol);
|
2022-06-15 10:49:21 +02:00
|
|
|
//if(checkArrayFullyFill(p,nRow)){
|
2022-06-13 17:24:53 +02:00
|
|
|
//clearRawData(N);
|
2022-06-07 14:28:32 +02:00
|
|
|
return p;
|
2022-06-15 10:49:21 +02:00
|
|
|
/*}
|
2022-06-07 14:28:32 +02:00
|
|
|
else{
|
|
|
|
return NULL;
|
2022-06-15 10:49:21 +02:00
|
|
|
}*/
|
2022-06-01 12:32:04 +02:00
|
|
|
}
|