modif de la partie 3

master
Antoine PEREDERII 2 years ago
parent 951ecb966a
commit caacc9891c

@ -1,24 +1,44 @@
#include "../SAE.h"
Admission lire(FILE *ficAdmission)
Departement lireDpt(FILE *flot)
{
Departement dpt;
fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat);
}
void afficherDpt(Departement dpt)
{
printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat);
}
Admission lireCandidat(FILE *flot)
{
Admission candidat;
int i;
int nbCandidats = 0;
fscanf(ficAdmission, "%d\n%d\t", &nbCandidats, &candidat.num);
fgets(candidat.nom, 22, ficAdmission);
Departement dpt;
int i = 0;
fscanf(flot, "%d\n", &candidat.num);
fgets(candidat.nom, 22, flot);
candidat.nom[strlen(candidat.nom) - 1] = '\0';
fgets(candidat.prenom, 22, ficAdmission);
fgets(candidat.prenom, 22, flot);
candidat.prenom[strlen(candidat.prenom) - 1] = '\0';
fscanf(ficAdmission, "%d\t%d\t%d\t%d\t%d\t%s\t", &candidat.noteMaths, &candidat.noteFrançais, &candidat.noteAnglais, &candidat.noteSpe, &candidat.nbChoix, candidat.ville);
if(candidat.nbChoix == 1)
for(i = 0; i < candidat.nbChoix; i++)
fscanf(flot, "%d\t%d\t%d\t%d\n%d\n%s\n", &candidat.noteMaths, &candidat.noteFrançais, &candidat.noteAnglais, &candidat.noteSpe, &candidat.nbChoix, candidat.ville);
if(candidat.nbChoix == 0)
{
fscanf(ficAdmission, "%s\t%d\t%d\t", candidat.departement, &candidat.decisionAdmission, &candidat.decisionCandidat);
listeNouvDpt();
return candidat;
}
dpt = lireDpt(flot);
while(!feof(flot) && i < candidat.nbChoix)
{
if(strcmp(dpt.departement, dptResAdmi) == 0)
{
candidat.ldept = insererDpt(candidat, dpt);
}
dpt = lireDpt(flot);
i++;
}
return candidat;
}
// REGARDER QUE CA TRIE LE BON DEPARTEMENT !!!!
void afficherCandidats(Admission candidat)
{
@ -26,105 +46,35 @@ void afficherCandidats(Admission candidat)
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville);
for(i = 0; i < candidat.nbChoix; i++)
{
printf("\t%s\t%d\t%d", candidat.departement, candidat.decisionAdmission, candidat.decisionCandidat);
afficherDpt(candidat.ldept[i]);
}
printf("\n");
}
FileAdmission filenouv(void)
{
FileAdmission f;
f = NULL;
return f;
}
FileAdmission adjq(FileAdmission f, Admission candidat)
Admission chargerCandidats(FILE *ficAdmission, char dptResAdmi[30])
{
MaillonAdmission *p;
p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission));
if(p == NULL)
Admission candidat = listeNouvCandidat();
char departement[30];
int decisionAdmission, decisionCandidat;
int i, nbCandidats = 0;
FILE *flot;
flot=fopen(ficAdmission, "r");
if(flot == NULL)
{
printf("Opérations interdites !!!!\n");
printf("Erreur d'ouverture du fichier !\n");
exit(1);
}
p->v = candidat;
if(vide(f))
fscanf(flot, "%d\n", &nbCandidats);
candidat = lireCandidat(flot);
while(!feof(flot))
{
p->suiv = p;
return p;
}
p->suiv = f->suiv;
f->suiv = p;
return p;
}
FileAdmission supt(FileAdmission f)
{
MaillonAdmission *aux;
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
if(f->suiv == f)
{
free(f);
return filenouv();
}
aux = f->suiv;
f->suiv = aux->suiv;
free(aux);
return f;
}
bool vide(FileAdmission f)
{
return f == NULL;
}
Admission tete(FileAdmission f)
{
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
candidat = lireCandidat(flot);
}
return f->suiv->v;
return candidat;
}
// REGARDER QUE CA TRIE LE BON DEPARTEMENT !!!!
int longueur(FileAdmission f)
{
int cpt = 1;
MaillonAdmission *aux;
if(vide(f))
{
return 0;
}
aux = f->suiv;
while(aux != f)
{
cpt++;
aux = aux->suiv;
}
return cpt;
}
void afficher(FileAdmission f)
{
MaillonAdmission *p=f;
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
afficherCandidats(f->v);
while(f->suiv != p)
{
f = f->suiv;
afficherCandidats(f->v);
}
printf("\n");
}
@ -145,15 +95,46 @@ void afficher(FileAdmission f)
int modifNoteMinAdmis()
{
int noteMaths, noteFrançais, noteAnglais, noteSpe;
printf("Entrez la nouvelle note minimale d'admission en maths : ");
printf("Entrez la nouvelle note minimale d'admission en maths (-1 pour quitter) : ");
while(noteMaths < 0 || noteMaths > 20)
{
scanf("%d", &noteMaths);
printf("Entrez la nouvelle note minimale d'admission en français : ");
if(noteMaths == -1)
{
break;
}
printf("La note doit être comprise entre 0 et 20 !\n");
}
printf("Entrez la nouvelle note minimale d'admission en français (-1 pour quitter) : ");
while(noteFrançais < 0 || noteFrançais > 20)
{
scanf("%d", &noteFrançais);
printf("Entrez la nouvelle note minimale d'admission en anglais : ");
if(noteFrançais == -1)
{
break;
}
printf("La note doit être comprise entre 0 et 20 !\n");
}
printf("Entrez la nouvelle note minimale d'admission en anglais (-1 pour quitter) : ");
while(noteAnglais < 0 || noteAnglais > 20)
{
scanf("%d", &noteAnglais);
printf("Entrez la nouvelle note minimale d'admission en spécialité : ");
if(noteAnglais == -1)
{
break;
}
printf("La note doit être comprise entre 0 et 20 !\n");
}
printf("Entrez la nouvelle note minimale d'admission en spécialité (-1 pour quitter) : ");
while(noteSpe < 0 || noteSpe > 20)
{
scanf("%d", &noteSpe);
if(noteSpe == -1)
{
break;
}
printf("La note doit être comprise entre 0 et 20 !\n");
}
}
modifNbAdmisMax()

51
SAE.h

@ -19,6 +19,37 @@ typedef struct
} VilleIUT; */
/* Partie 3 */
/* V2 */
typedef struct {
char departement[30];
int decisionAdmission;
int decisionCandidat;
} Departement;
typedef struct maillonDepartement {
Departement v;
struct maillonDepartement *suiv;
} MaillonDepartement, *ListeDepartement;
typedef struct {
int num;
char nom[22]; // 20 caractere + 1 espace + 1 caractere de fin de chaine
char prenom[22]; // 20 caractere + 1 espace + 1 caractere de fin de chaine
int tabMatiere[4];
int nbChoix;
char ville[30];
ListeDepartement ldept;
} Admission;
typedef struct maillonAdmission {
Admission v;
struct maillonAdmission *suiv;
} MaillonAdmission, *FileAdmission;
/* V1
typedef struct {
int num;
char nom[22]; // 20 caractere + 1 espace + 1 caractere de fin de chaine
@ -29,9 +60,21 @@ typedef struct {
int noteSpe;
int nbChoix;
char ville[30];
char departement[20];
int decisionAdmission;
int decisionCandidat;
char departement1[20];
int decisionAdmission1;
int decisionCandidat1;
char departement2[20];
int decisionAdmission2;
int decisionCandidat2;
char departement3[20];
int decisionAdmission3;
int decisionCandidat3;
char departement4[20];
int decisionAdmission4;
int decisionCandidat4;
char departement5[20];
int decisionAdmission5;
int decisionCandidat5;
} Admission;
// Utilisation d'une file car on a pas besoins de modifier les candidats, les mettre au milieu de la file,
// on a juste besoin de les ajouter et de les supprimer, on cherche à les parcourir dans l'ordre d'arrivée
@ -40,4 +83,4 @@ typedef struct maillonAdmission {
Admission v;
struct maillonAdmission *suiv;
} MaillonAdmission, *FileAdmission;
*/

@ -1,2 +1,96 @@
#include "../SAE.h"
FileAdmission filenouvListeDpt(void)
{
FileAdmission f;
f = NULL;
return f;
}
FileAdmission adjq(FileAdmission f, Admission candidat)
{
MaillonAdmission *p;
p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission));
if(p == NULL)
{
printf("Opérations interdites !!!!\n");
exit(1);
}
p->v = candidat;
if(vide(f))
{
p->suiv = p;
return p;
}
p->suiv = f->suiv;
f->suiv = p;
return p;
}
FileAdmission supt(FileAdmission f)
{
MaillonAdmission *aux;
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
if(f->suiv == f)
{
free(f);
return filenouv();
}
aux = f->suiv;
f->suiv = aux->suiv;
free(aux);
return f;
}
bool vide(FileAdmission f)
{
return f == NULL;
}
Admission tete(FileAdmission f)
{
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
return f->suiv->v;
}
int longueur(FileAdmission f)
{
int cpt = 1;
MaillonAdmission *aux;
if(vide(f))
{
return 0;
}
aux = f->suiv;
while(aux != f)
{
cpt++;
aux = aux->suiv;
}
return cpt;
}
void afficher(FileAdmission f)
{
MaillonAdmission *p=f;
if(vide(f))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
afficherCandidats(f->v);
while(f->suiv != p)
{
f = f->suiv;
afficherCandidats(f->v);
}
printf("\n");
}
Loading…
Cancel
Save