diff --git a/header/sae.h b/header/sae.h index 690eb09..20cf190 100644 --- a/header/sae.h +++ b/header/sae.h @@ -52,7 +52,6 @@ typedef struct maillonCandidat struct maillonCandidat * suiv; } MaillonCandidat, * ListeCandidats; - // Structures de la partie 1 : typedef struct log { @@ -62,6 +61,16 @@ typedef struct log }Log; typedef struct maillonDept +{ + char nomDept[30]; + char resp[30]; + int nbP; + struct maillonDept *suiv; + +}MaillonDept, *ListeDept; + + +typedef struct maillonDeptV2 { char nomDept[30]; char resp[30]; @@ -72,15 +81,18 @@ typedef struct maillonDept int admisMax; ListeCandidats lAdmis; ListeCandidats lAttente; + struct maillonDeptV2 *suiv; - struct maillonDept *suiv; -}MaillonDept, *ListeDept; +} MaillonDeptV2, * ListeDeptV2; // Utilise pour le tableau de pointeurs sur cette structure (pour Guillaume) typedef struct { char nom[30]; ListeDept lDept; + + // Mise à jour pour correspondre à la partie 3 + ListeDeptV2 lDeptV2; }VilleIut; /* diff --git a/source/sae.c b/source/sae.c index 4922073..4f89073 100644 --- a/source/sae.c +++ b/source/sae.c @@ -541,3 +541,62 @@ void afficherCandidats(Candidat *candidats, int nbCandidats) afficherCandidat(candidats[i]); } } + + +// =============================================================================== +// PARTIE 3 +//=============================================================================== + +/** + * \brief Permet de convertir la liste de departement des VilleIut de la partie 1 + dans la nouvelle version pour correspondre à la partie 3. Et la fonction + définie au passage le nombre maximal d'admis pour le département et sa + moyenne minimale à obtenir pour y accéder. + * \param ldept La liste de départements de la partie 1 pour une villeIut + * \return La nouvelle liste de départements adaptée à la partie 3. + * + */ +ListeDeptV2 configurationDeptV2( ListeDept ldept ) +{ + ListeDeptV2 lDeptV2 = NULL; + + if ( ldept == NULL ) return lDeptV2; + + while ( ldept != NULL ) + { + MaillonDept * aux = ( MaillonDept * ) malloc ( sizeof( MaillonDept )); + if ( aux == NULL ) + { + printf(" \n ---> Erreur d'allocation memoire... \n"); + exit(1); + } + + MaillonDeptV2 * mV2 = ( MaillonDeptV2 ) malloc ( sizeof( MaillonDeptV2 )); + { + printf("\n --> Erreur d'allocation memoire...\n"); + exit(1); + } + + printf(" \n Quelle est la moyenne minimale a avoir pour le departement %10s ? : ", ldept -> nomDept); + scanf("%d", mV2 -> moyMin); + + printf(" \n Quel est le nombre maximal d'admis pour le departement %10s ", ldept -> nomDept); + scanf("%d", mV2 -> admisMax); + + strcpy( ldept -> nomDept, mV2 -> nomDept ); + strcpy( ldept -> resp, mV2 -> resp ); + mV2 -> nbP = ldept -> nbP; + + lDeptV2 -> lAdmis = NULL; + lDeptV2 -> lAttente = NULL; + + mV2 -> suiv = lDeptV2; + lDeptV2 = mV2; + + aux = ldept; + ldept = ldept -> suiv; + free(aux); + } + + return lDeptV2; +} \ No newline at end of file