projet-reseaux-trophiques-equipe-3b / Algo_et_parcours_graphe / infoGraphe.h
infoGraphe.h
Raw
//
// Created by titou on 28/11/2024.
//

#ifndef PROJET_RESEAUX_TROPHIQUES_EQUIPE_3B_INFOGRAPHE_H
#define PROJET_RESEAUX_TROPHIQUES_EQUIPE_3B_INFOGRAPHE_H

#include <stdlib.h>
#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