...
 
Commits (2)
{
"files.associations": {
"stdio.h": "c"
}
}
\ No newline at end of file
......@@ -2,24 +2,105 @@
#include <stdlib.h>
#include "tp3.h"
// mettre des fflush
// libérer la mémoire
//
int main(){
char matiere[30] = "histoire";
T_Note* noteA = creerNote(12,matiere);
int continuer = 1;
int choix;
T_ListeEtu liste = creerListe();
T_Etudiant* etu1 = creerEtudiant(1,"Bocquet", "Anthony");
T_Etudiant* etu2 = creerEtudiant(2,"Doe", "John");
T_Etudiant* etu3 = creerEtudiant(4,"Test", "Test");
etu1->suivant = etu2;
etu2->suivant = etu3;
liste = etu1;
while(continuer){
printf("Choisissez une option : \n");
printf("1. Créer la liste d'étudiants\n");
printf("2. Ajouter une note pour un étudiant\n");
printf("3. Supprimer une note pour un étudiant\n");
printf("4. Afficher la liste des étudiants\n");
printf("5. Afficher le classement\n");
printf("6. Afficher les sous-listes pour une épreuve\n");
printf("7. Quitter\n");
scanf("%d", &choix);
fflush(stdin);
if(choix == 1){
int i = 1;
while(i){
int id;
char* nom = malloc(sizeof(char)*20);
char* prenom = malloc(sizeof(char)*20);
printf("Entrez l'id de l'étudiant : ");
scanf("%d", &id);
fflush(stdin);
printf("Entrez le nom de l'étudiant %d : ", id);
scanf("%s", nom);
fflush(stdin);
printf("Entrez le prenom de l'étudiant %d : ", id);
scanf("%s", prenom);
fflush(stdin);
T_Etudiant* etu = creerEtudiant(id, nom, prenom);
liste = ajouterEtuListe(etu, liste);
id++;
printf("Ajouter un autre étudiant ? 1 = oui, 0 = non : ");
scanf("%d", &i);
fflush(stdin);
}
}else if(choix == 2){
int id_etu;
float note;
char matiere[20];
printf("Entrez l'id de l'étudiant : ");
scanf("%d", &id_etu);
fflush(stdin);
printf("Entrez le nom de la matière : ");
scanf("%s", matiere);
fflush(stdin);
printf("Entrez la note de l'étudiant : ");
scanf("%f", &note);
fflush(stdin);
liste = ajouterNoteEtu(note, matiere, id_etu, liste);
}else if(choix == 3){
int id_sup;
char uv[20];
printf("Entrez l'id de l'étudiant : ");
scanf("%d", &id_sup);
fflush(stdin);
printf("Entrez le nom de la matière : ");
scanf("%s", uv);
fflush(stdin);
liste = supprimerNoteEtu(uv, id_sup, liste);
}else if(choix == 4){
afficherListeEtu(liste);
}else if(choix == 5){
afficherClassement(liste);
}else if(choix == 6){
char mat[20];
printf("Choisissez une matière : ");
scanf("%s", mat);
fflush(stdin);
sousListes(liste, mat);
}else if(choix == 7){
T_ListeEtu temp = liste;
for(temp; temp != NULL; temp = temp->suivant){
printf("\n%d\n", temp->identifiant);
}
liste = ajouterEtuListe(creerEtudiant(3, "c", "c"), liste);
afficherListeEtu(liste);
}
else{
continuer = 0;
//libérer la mémoire
}
}
/*
ajouterNoteEtu(1, "SR01", 1, liste);
ajouterNoteEtu(2, "NF16", 1, liste);
ajouterNoteEtu(3, "LO21", 1, liste);
......@@ -39,7 +120,7 @@ int main(){
ajouterNoteEtu(14, "NF16", 4, liste);
ajouterNoteEtu(20, "LO21", 4, liste);
*/
/*
liste = supprimerNoteEtu("NF16", 1, liste);
liste = supprimerNoteEtu("SR01", 1, liste);
......@@ -47,11 +128,9 @@ int main(){
*/
liste = trierListeEtu(liste);
afficherListe(liste);
//liste = trierListeEtu(liste);
sousListes(liste, "SR01");
//sousListes(liste, "SR01");
/*
for(int i = 0; i < liste->nbrNotes; i++){
printf("%d\n", liste->liste->note);
......
No preview for this file type
No preview for this file type
......@@ -51,49 +51,109 @@ T_ListeNotes ajouterNote(float note, char *matiere, T_ListeNotes listeNotes){
/* -------------------------------------------------------------------*/
T_ListeEtu ajouterNoteEtu(float note, char *matiere, int idEtu, T_ListeEtu listeEtu){
T_ListeEtu prec;
while(listeEtu && listeEtu->identifiant != idEtu){
T_ListeEtu ajouterEtuListe(T_Etudiant* etu, T_ListeEtu listeEtu){
T_ListeEtu temp = listeEtu;
if(listeEtu->identifiant > idEtu) break;
if(listeEtu->identifiant == -1){
listeEtu = (T_ListeEtu)etu;
return listeEtu;
}
else{
T_ListeEtu prec = NULL;
prec = listeEtu;
listeEtu = listeEtu->suivant;
}
while(temp->suivant && temp->identifiant < etu->identifiant){
prec = temp;
temp = temp->suivant;
}
if(temp->identifiant == etu->identifiant){
printf("\nL'étudiant existe déjà.\n");
}else if(temp->identifiant < etu->identifiant){
etu->suivant = NULL;
temp->suivant = etu;
return listeEtu;
}
else{
if(prec){
printf("etuid : %d\nprecid : %d\ntemp id : %d\n", etu->identifiant, prec->identifiant, temp->identifiant);
prec->suivant = etu;
etu->suivant = temp;
return listeEtu;
}
else {
printf("etuid : %d\ntemp id : %d\n", etu->identifiant, temp->identifiant);
if(temp->identifiant > etu->identifiant){
etu->suivant = temp;
return (T_ListeEtu)etu;
}else{
temp->suivant = etu;
return temp;
}
}
}
}
}
/* -------------------------------------------------------------------*/
T_ListeEtu ajouterNoteEtu(float note, char *matiere, int idEtu, T_ListeEtu listeEtu){
T_ListeEtu prec;
T_ListeEtu temp = listeEtu;
char* mat = malloc(sizeof(char)*20);
strcpy(mat, matiere);
while(temp && temp->identifiant != idEtu){
//if(temp->identifiant > idEtu) break;
if(listeEtu && listeEtu->identifiant == idEtu){
listeEtu->liste = ajouterNote(note,matiere,listeEtu->liste);
listeEtu->nbrNotes++;
prec = temp;
temp = temp->suivant;
}
if(temp && temp->identifiant == idEtu){
temp->liste = ajouterNote(note,mat,temp->liste);
temp->nbrNotes++;
return listeEtu;
}
else{
}
else{
char* nom = malloc(sizeof(char)*20);
char* prenom = malloc(sizeof(char)*20);
printf("L'étudiant avec l'id %d n'existe pas, entrez son nom : ", idEtu);
fflush(stdin);
scanf("%s", nom);
printf("Entrez son prenom : ");
fflush(stdin);
scanf("%s", prenom);
T_Etudiant* e = creerEtudiant(idEtu, nom, prenom);
e->liste = ajouterNote(note,matiere,e->liste);
e->suivant=listeEtu;
T_ListeEtu e = creerEtudiant(idEtu, nom, prenom);
e->liste = ajouterNote(note,mat,e->liste);
e->suivant=NULL;
e->nbrNotes=1;
listeEtu = ajouterEtuListe(e, listeEtu);
return listeEtu;
if(listeEtu->identifiant > idEtu){
prec->suivant = e;
e->suivant = listeEtu;
/*
if(temp->identifiant > idEtu){
if(prec){
prec->suivant = e;
}
e->suivant = temp;
}else{
listeEtu->suivant = e;
temp->suivant = e;
}
return e;
}
}
*/
}
}
/* -------------------------------------------------------------------*/
......@@ -168,23 +228,30 @@ T_ListeEtu ajouterEtu(int idEtu, char *nom, char *prenom, T_ListeEtu listeEtu){
void afficherListeEtu(T_ListeEtu listeEtu){
if(listeEtu == NULL) printf("\nAucun étudiant dans la liste.");
while(listeEtu){
printf("Nom: %s, prenom: %s, liste des notes: \n",listeEtu->nom, listeEtu->prenom);
T_ListeNotes l = listeEtu->liste;
void afficherListeEtu(T_ListeEtu listeEtu){
T_ListeEtu temp = listeEtu;
if(temp == NULL) printf("\nAucun étudiant dans la liste.");
while(temp){
printf("Nom: %s, prenom: %s, liste des notes: \n",temp->nom, temp->prenom);
T_ListeNotes l = temp->liste;
while(l){
printf("Matiere: %s \t Note obtenue: %d \n",l->matiere, l->note);
l = l->suivant;
}
if(listeEtu->moyenne>0) printf("Pour une moyenne de %.2f \n",listeEtu->moyenne);
listeEtu = listeEtu->suivant;
if(temp->moyenne>0) printf("Pour une moyenne de %.2f \n",temp->moyenne);
temp = temp->suivant;
}
}
}
/* -------------------------------------------------------------------*/
float calculMoyenneEtu(T_Etudiant* etu){
int i;
float somme=0;
......@@ -277,12 +344,10 @@ T_ListeEtu trierListeEtu(T_ListeEtu liste){
return trie;
}
void afficherClassement(T_ListeEtu liste){
T_ListeEtu temp = trierListeEtu(liste);
afficherListe(temp);
}
/* -------------------------------------------------------------------*/
......
......@@ -30,7 +30,9 @@ T_Note* creerNote(float note, char *matiere);
T_Etudiant *creerEtudiant(int idEtu, char *nom, char *prenom);
T_ListeNotes ajouterNote(float note, char *matiere, T_ListeNotes listeNotes);
T_ListeEtu triById(T_ListeEtu liste);
T_ListeEtu ajouterNoteEtu(float note, char *matiere, int idEtu, T_ListeEtu listeEtu);
T_ListeEtu ajouterEtuListe(T_Etudiant* etu, T_ListeEtu listeEtu);
T_ListeEtu supprimerNoteEtu(char *matiere, int idEtu, T_ListeEtu listeEtu);
......@@ -43,6 +45,7 @@ T_ListeEtu ajouterEtu(int idEtu, char *nom, char *prenom, T_ListeEtu listeEtu);
T_ListeEtu creerListe();
void calculMoyenne(T_ListeEtu);
T_ListeEtu trierListeEtu(T_ListeEtu);
void afficherClassement(T_ListeEtu liste);
void sousListes(T_ListeEtu listeEtu, char* matiere);
void afficherSousListe(T_ListeEtu);
......
No preview for this file type