// // Created by titou on 28/11/2024. // #ifndef PROJET_RESEAUX_TROPHIQUES_EQUIPE_3B_INFOGRAPHE_H #define PROJET_RESEAUX_TROPHIQUES_EQUIPE_3B_INFOGRAPHE_H #include #include "cJSON.h" #define INFINI 1000000 enum TypeEspece { INCONNU = 0, PRODUCTEUR_PRIMAIRE = 1, CONSOMMATEUR_PRIMAIRE = 2, CONSOMMATEUR_SECONDAIRE = 3, CONSOMMATEUR_TERTIAIRE = 4 }; typedef struct { int id; char* name; char* couleur; int type_espece; double * population; double tCroissance; int vivante; } espece; typedef struct { int nbSommets; char** noms; char * ecosysteme; int** capacites; espece * tabEspece; } Graphe; // Lire le contenu d'un fichier char* lireFichier(const char* nomFichier); int determinerTypeEspece(Graphe *graphe, int especeIndex, espece * espece1); // Créer le graphe avec les espèces à partir du JSON Graphe* creerGrapheAvecEspeces(cJSON * json); // Afficher le graphe void afficherGraphe(Graphe* graphe); // Libérer la mémoire du graphe void libererGraphe(Graphe* graphe); // Liberer la mémoire des esoeces void libererEspeces(espece* especes); //Donner le nom du type de l'espece const char* obtenirNomTypeEspece(int type); //Affichage de la complexité void afficherComplexiteReseau(Graphe* graphe); //mesure du nivau trophique int calculerHauteurTrophique(Graphe* graphe); //Calcul de la desnité de liaison double calculerDensiteLiaison(Graphe* graphe); //Afficher la distrib de degrée void afficherDistributionDegres(Graphe* graphe); int* obtenirDegresSortants(Graphe* graphe); int* obtenirDegresEntrants(Graphe* graphe); //Recherche de sommet particulier void AffichageSommetSpecifique(Graphe* graphe); void affichageSommPart(Graphe* graphe);//Fonction global pour toute la rubrique de l'affichage des sommet particulier (la seul à utiliser) void RechercheSommetPart(Graphe* graphe,int nbdegresSortant, int nbdegresEntrant); void RechercheSansPredateur(Graphe* graphe); void RechercheProducteurPrimaire(Graphe* graphe); //Etude de la hauteur trophique d'une espece void construireChaineAlimentaire(Graphe* graphe, int especeIndex, char* base, int* niveauTrophique, int niveau); void afficherChainesAlimentaires(Graphe* graphe, const char* nomEspece); void AnalyseHauteurTrophique(Graphe* graphe); //Rubrique analyse de la conexité int** creerMatriceNonOriente(Graphe* graphe); int estConnexe(Graphe* graphe); int estConnexeApresSuppression(Graphe* graphe, int* sommetsSuppr, int nbSuppr); int calculerKConnexite(Graphe* graphe); void afficherAnalyseConnexite(Graphe* graphe); #endif //PROJET_RESEAUX_TROPHIQUES_EQUIPE_3B_INFOGRAPHE_H