import java.util.*; class Note { int matiere; float val; Note(int m, int val) { matiere = m; this.val = val; } } Note saisirNote() { int m; float v; Note n; do { m = askInteger("Veuillez saisir la matiere (entre 1 et 5)"); } while(!(1<=m && m<=5)); // (1>m || m>5) do { v = askFloat("Veuillez saisir la note"); } while(!(0<=v && v<=20)); n = new Note(m,v); return n; } void afficheNote(Note n) { String s; switch(n.matiere) { case 1: s="Informatique"; break; case 2: s="Mathématique"; break; case 3: s="Physique"; break; case 4: s="Chimie"; break; case 5: s="Anglais"; break; } println(s+" : "+n.val); } class Etudiant { String nom; String prenom; int age; Note[] sesNotes; Etudiant(String n, String p, int a, Note[] lesNotes) { nom = n; prenom = p; age = a; sesNotes = lesNotes; } } Etudiant saisirEtudiant() { String nom, prenom; int age, index; Note notes = new Notes[5]; Note uN; boolean recommencer; Etudiant etu; nom = askString("Veuillez saisir le nom de l'étudiant"); prenom = askString("Veuillez saisir le prénom de l'étudiant"); do { age = askInteger("Veuillez saisir l'age"); } while(!(10<=age && age<=90)); // (10>age || age>90) uN = saisirNote(); notes[0] = uN; for(index = 1; index <5; index++) { do { recommencer = false; uN = saisirNote(); for(int i=0;in1.matiere){ return -1; } else return 1; } } void triNotesParMatieresCroissantes(Note[] notes) { Arrays.sort(notes, new ComparateurParMatiereCroissant()); } class ComparateurParMoyenneDecroissant implements Comparator { public int compare(Object o1, Object o2) { // selon l'ordre decroissant de la moyenne puis du age puis ordre alphabétique inverse Etudiant e1 = (Etudiant)o1; Etudiant e2 = (Etudiant)o2; if (calculMoyenne(e1)>calculMoyenne(e2)){ return -1; } else if (calculMoyenne(e1)==calculMoyenne(e2) && e1.age>e2.age){ return -1; } else if (calculMoyenne(e1)==calculMoyenne(e2) && e1.age==e2.age && e2.nom.compareTo(e1.nom)>0){ return -1; } else return 1; } } void triEtudiantsParMoyenneDecroissante(Etudiant[] lesEtudiants) { Arrays.sort(lesEtudiants, new ComparateurParMoyenneDecroissant); } void setup() { String fichier = "promo2017.txt"; int choix; Etudiant etu; PrintWriter out; Etudiant[] lesEtudiants; do { println("1) Ajout etudiant"); println("2) Affiche les étudiants"); println("3) Tri étudiants par moyenne"); println("4) Quitter"); choix = askInteger("votre choix ?"); switch (choix) { case 1: etu = saisirEtudiant(); out = createWriter(fichier); ecrireEtudiant(etu,out); out.flush(); out.close(); break; case 2: afficheLesEtudiants(fichier); break; case 3: lesEtudiants = lireLesEtudiants(fichier); triEtudiantsParMoyenneDecroissante(lesEtudiants); break; } } while(choix!=4); }