Un probleme le plus difficile que je croise

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010 - 3 juin 2008 à 17:38
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 - 4 juin 2008 à 10:19
salut,

je suis tombé sur un probleme, et c'est le plus difficle que je croise jusqu'a maintenant :

Programmation structurée :

Ecrivez un programme permettant, à l'utilisateur de saisir les notes d'une classe. Le programme , une fois la saisie terminée, affiche la liste des étudiants ayant une note supérieur à 10. La liste des étudiants doit etre trié par ordre alphabétique

-------------------

voila ce que j'a ifait :

        Vector<String> tab=new Vector<String>();
        Vector<Double> tab2=new Vector<Double>();
        boolean reponse=false;
        int i=1;
        while(reponse==false)
        {
            System.out.println ("etudiant"+i);
            String et=reads();
            tab.addElement(et);
            System.out.println ("note");
            Double j=readd();
            tab2.addElement(j);
            System.out.println ("saisie o/n?");
            String gg=reads();
            if ( gg== "n") reponse=true;
            i++;   
        }   
         
    }
    public static double readd() throws IOException{
        BufferedReader f=new BufferedReader(new InputStreamReader(System.in));
        int g=f.read();
        return g;
    }

            public static String reads() throws IOException{
        BufferedReader f=new BufferedReader(new InputStreamReader(System.in));
        String g=f.readLine();
        return g;
    }

----------------

mais si on trie ou on modifie le tableau, comment savoir quel etudiant à sa note ? ça va tout melanger ....

une idée svp ?

merci
 

4 réponses

didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
3 juin 2008 à 18:48
Slt.

Tu peux peut-être créer un Vector pour chaque étudiants. Comme ca, tu mets toutes les note d'un même étudiant dans son Vector et lorsque tu trira les étudiants par ordre alphabétique, tu ne fera que trier tes vector (donc étudiant + notes).

Exemple d'une organisation possible pour les vecteurs étudiant :
   - Id de l'étudiant.
   - Notes

Chaque vector étudiant est stocké dans un vector général (par exemple : "Students").
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
4 juin 2008 à 00:55
Slt,
et pourquoi ne créé tu pas une class Etudiant (nom , prenom , note )

tu mets tes étudiants dans 1 vecteur Vector<Etudiant>

tu tries ton vecteur par nom ( tu mets dans Etudiant 1 fonction publique getNom(); )
et puis il te suffit de parcourir ton vecteur d'etudiants et de faire 1 test genre :

for(int i=0 ; i<vectEtudiant.size();i++)
{
   if(vectEtudiant.get(i).getNote() >10 )  -->(idem fonction publique getNote() )
                  // tu mets ici ta procedure pour ajouter cet etudiant a la liste a afficher ...
}
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
4 juin 2008 à 09:10
+1 pour Nicolas___
de plus, on va préférer utiliser une List plutôt qu'un Vector. Le Vector fait appel à une synchronisation il va être beaucoup plus lent. Vector est même deprecated.

Mais, avec Java, penses objet et Nicolas___ t'as donné une bonne solution

<hr size="2" width="100%" />Timmy!!!
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
4 juin 2008 à 10:19
Je rajouterais que ce serait très pratique si ta classe Etudiant implémentait l'interface Comparable<Etudiant>, ainsi, dans ta méthode compareTo, tu renvoies this.getNom().compareTo(deuxiemeEtudiant.getNom()).

De cette manière, quand tu auras ta liste d'étudiants, ( List<Etudiant> ), tu n'auras plus qu'à appeler la méthode Collections.sort(listeDEtudiants).

Ensuite pour ce qui est du filtre, vois les choses en grand : Crée une interface FiltreEtudiants qui prend en paramètre du constructeur une liste d'etudiants et qui sort à la demande une sous liste de cette liste.

Tu fais éventuellement une classe abstraite intermédiaire étant donné que les filtres auront beaucoup de points communs et enfin une classe FiltreAdmis qui implémente la méthode getListeFiltree de l'interface Filtre en renvoyant la sous-liste contenant seulement les étudiants ayant la moyenne.
0
Rejoignez-nous