Exercice vector en java

Fermé
zeineb - 31 mai 2008 à 15:23
 Matkill - 3 juin 2010 à 12:16
Bonjour,
j'ai une classe abstract ensembletrie destinée à gérer un ensemble d'objets triés ,pour representer cet ensemble d'objets on utilise un vector
voici le squelette de cette classe:
public abstract class ensembletrie{
private vector contenu=new vector();
public abstract boolean superieur(object o1,object o2);
public void inserer(object o){};
public void supprimer(object o){};
public String toString(){};
public object element(int i){};
public int taille(){};
}
vous pouvez m'aider et dire est ce que les codes suivant juste ou non et les corriger :
question 1:definir les methodes inserer et supprimer
reponse:
public void inserer(object o)
{
contenu.add(o);
}
public void supprimer(object o)
{
contenu.remove(o);
}
question 2:definir methode tostring afin que les objets affichés de la façon suivante {<elt1>,<elt2>,......,<eltn>}
reponse:
public string tostring()
{
string res=" ";
for(int i=1;i<contenu.size();i++)
{
res=("<"+contenu.get(i)+">");
}
}
question 5:definir une classe ensembletriechaine qui decrit un ensemble trié des chaines de (string ) de maniere à ce que le code suivant:
ensembletreichaine e=new ensembletriechaine();
e.inserer("toto");
e.inserer("titi");
e.inserer("tutu");
e.inserer("toto");
produise l'affichage suivant:
{titi,toto,tutu}
reponse:
class ensembletriechaine
{
vector v=new vector();
void inserer(object o)
{
for(int i=0;i<v.size();i++)
{
v.addElement(new String(v.get(i));
}
}
question 5: definir la methode public string concat() qui retourne une chaine obtenue par concatenation de toutes les chaines de l'ensemble par exemple
string s=e.concat();
systemoutprintln(s);
va produire : tititototutu
reponse:
public string concat()
{
je ne sais pas comment faire si vous pouvez m'aider
}
A voir également:

2 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
1 juin 2008 à 22:28
Bonsoir!
Question1 :
Concernant ton insertion, je pense que c'est plus compliqué que ça. Le but de l'exercice étant de gérer une liste triée, il faut imaginer que ta liste sera toujours triée : initialement tu insères un élément, et il peut être intéressant d'insérer immédiatement au bon endroit ton nouvel élément, pour avoir un vector toujours trié.
Utiliser donc public void add(int index, Object element)

Pour remove ok.
Question 2 :
public String tostring() {
 String res=" ";
 for(int i=0; i<contenu.size(); i++) {
  res+=("<"+contenu.get(i)+">");
 }
 return res;
} 

Il faut mettre += sinon ta chaine va être écrasée à chaque tour de boucle.
Et puis il faut commencer ta boucle à 0, sinon il va te manquer un élément.
Enfin, il faut retourner ta chaine à la fin (sinon ça compile pas de toutes façons :)

Question 5 :
Il faut (enfin, c'est beaucoup mieux :D) que ta classe ensemblechainetriee étende ta classe abstraite.
class Ensembletriechaine extends Ensembletrie {
...
} 

De cette manière, tu n'est pas obligé de réécrire les méthodes définies dans ta classe abstraite.
Cependant, pour coller à la question posée, tu dois surcharger ta méthode "inserer" précédemment définie : il faut que tu ne gères pas les doublons (si ton implémentation dans ta classe abstraite gère déjà ce cas, tu n'as même pas besoin de la surcharger !).
N'utilises pas addElement, car la méthode ajoute le nouvel élément à la fin du vecteur (et ici, il faut que tes éléments soient triés !).

Enfin, il te faut définir ta méthode de comparaison de chaine (public boolean superieur(object o1,object o2)), que tu utilises dans ta méthode insérer, pour indiquer que "toto">"titi" par exemple.

Question 5:
public String concat() {
 String chaine ="";
 for (int i=0; i<contenu.size(); i++) {
  chaine+=contenu.get(i).toString(); 
  /*ici le .toString() est facultatif car on gère des strings, mais si tu étends ta classe, il te suffira alors de surcharger ta      méthode toString() dans la classe fille, et tu n'auras pas à réécrire ta méthode concat() */
 }
 return chaine;
}


Cordialement.
0
Marco la baraque pour la question 1 pour le tri zeineb ajoute juste tes éléments et à la fin de tes ajouts fait
Collections.sort(contenu);
Fonction qui va trier directement ton vecteur.
0