Piles en Java

Piles en Java - Java - Programmation

Marsh Posté le 02-10-2005 à 11:21:49    

Salut à tous!
Je suis nouveau sur HArdware.fr!
Voila mon probleme:
J'ai un exposé à faire pour lundi sur les types de données usuels.
En fait il s'agit de types abstraits de données ce que mon prof a oublié de preciser et qu'il nous a revelé simplement Jeudi donc je suis tres en retard pour cet exposé!
Surles TAD j'ai préféré traité des piles.
J'ai voulu creer un programme d'implementation d'une pile par un tableau et j'aimerai que vous le voyez pour me dire mes erreurs et s'il est bien comme il faut.
Merci d'avance:
J'ai fait ca:
 
public class Pile{
private int table [];
public Pile (int pile []){
table=pile;
 
int i;
while (table[i]!=0){
i++;
}
//Empiler
public int empiler( int élément){
// on voit quand est ce que le tableau n’est plus rempli
// on teste la taille du tableau
try{
 int table[i+1]=new int (élement);
                                     throws ExceptionPilePleine;
}
catch (ExceptionPilePleine e){
 System.out.println("La pile est pleine" );
}
}
 
//Depiler
public int dépiler(){
try{
int table[i]= new int (O);
                         throws ExceptionPileVide;
 }
catch (ExceptionPileVide e){
  System.out.println("La pile est deja vide" );
 }
}
 
//Taille
public int taille(){
System.out.println("la taille est"+i+);
}
//Haut
public int haut(){
System.out.println("l’élément du haut est"+[i]+);
}
 
 
//EstVide
public boolean EstVide(){
if i=0
System.out.println("La pile est vide" );
else
System.out.println("La pile n’est pas vide" );
};
};
}
 
Est-ce que c'est juste?
Pouvez vous me corriger mes erreurs? car je suis vraiment debutant en info.


Message édité par Stormy7391 le 02-10-2005 à 20:23:14
Reply

Marsh Posté le 02-10-2005 à 11:21:49   

Reply

Marsh Posté le 02-10-2005 à 12:10:32    

Pas de reponse? ;-( S'il vous plait c'est très important!

Reply

Marsh Posté le 02-10-2005 à 12:22:41    

Tu peux eviter de jeter une exception ? Crée une nouvelle exceptiopn pour exprimer le fait qu'une pile soit pleine.
 
C'est pas une interface, c'est une classe, elle a du code dedans :o
 
Ta table est purement interne à la pile, met la en privée.  
 
Implémente une seule fois taille, pas la peine de le dupliquer dans toutes les méthodes.  
 
\\ ne veut rien dire, utilise des commentaires javadoc pour commenter un élément /** ..... */
 
euuuuhhhhhhhh, tu peux pas le compiler avec le JDK, parce que là, c'est catastrophique en fait ....


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 02-10-2005 à 12:25:59    

tu reviens quand t'as un truc qui compile, on discutera TAD après :)

Reply

Marsh Posté le 02-10-2005 à 12:32:45    

merci pour ta franchise mais ce n'est que mon troisieme cours en java donc dsl!
Mais j'ai vu un exemple d'impementation de pile ou on jeté les exceptions et on declarait la pile comme une interface. Ca faisait ca:
public interface Pile{
public int taille();
public boolean estVide();
public Object haut();
                throws ExceptionPileVide;
public void empiler(Object o);
public Oject dépiler();
                throws ExceptionPileVide;
}

Reply

Marsh Posté le 02-10-2005 à 12:40:31    

Comme tu as pas encore vu une interface, on va faire court, ce n'est pas un exemple d'implémentation de pile, c'est un exemple de publication de type abstrait.
 
Et ça lève ExceptionPileVide, pas Exception. Le type de l'exception levée définie quel est le problème.


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 02-10-2005 à 15:23:29    

resalut!
J'ai compilé et effectivement pleins d'erreurs mais yen a que je ne comprend pas.
Il me marque qu'il manque <identifier> a chaque fois que je met public int ou public void...
C'est quoi le probleme?

Reply

Marsh Posté le 02-10-2005 à 15:56:38    

c'est bon j'ai rectifié mais ya tjs un probleme.
Il me marque que "public int empiler(element) {"
est un debut d'expression illegal!!!!!!!
Pk?

Reply

Marsh Posté le 02-10-2005 à 16:02:41    

Ca veut rien dire "public int empiler(element)" faut pas confondre declaration et appel.
 
balance plus de code ...  


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 02-10-2005 à 16:16:07    

en fait je veux creer une fonction empiler qui retournera un entier.
dans le cours on peut voir:
public chaine (String A){
...
}
En plus je veux declarer privé mon tableau nommé table: je tape : private int table[];
et ca ne prend pas non plus!

Message cité 1 fois
Message édité par Stormy7391 le 02-10-2005 à 16:17:37
Reply

Marsh Posté le 02-10-2005 à 16:16:07   

Reply

Marsh Posté le 02-10-2005 à 16:17:57    

Stormy7391 a écrit :

en fait je veux creer une fonction empiler qui retournera un entier.
dans le cours on peut voir:
public chaine (String A){
...
}


 
Ca, c'est un constructeur de la classe chaine. Une méthode retourne un type. Une méthode qui s'appelle chaine donne :  
public String chaine (String A){
 
 

Stormy7391 a écrit :

En plus je veux declarer privé mon tableau nommé table: je tape : private table[];
et ca ne prend pas non plus!


 
Et le type des éléments du tableau, oukilé ?


Message édité par elianor le 02-10-2005 à 16:18:51

---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 02-10-2005 à 16:30:50    

Meme avec int (car finallement je veux faire une pile d'entier):
public int table[]
ca marche pas et tjs le meme message!
¨Pour ce qui est de "empiler", c'est justement une methode de la classe Pile que je souhaite construire. Que faut-il que je marque alors!!!!!

Reply

Marsh Posté le 02-10-2005 à 16:33:29    

Code :
  1. public int empiler(int element){
  2. ...
  3. return un_int;
  4. }


 
???


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 02-10-2005 à 16:47:01    

J'ai pas tres bien compris le dernier message!!! et j'ai modifier mon premier poste.
Je n'ai plus de probleme avec table mais toujours avec empiler.

Reply

Marsh Posté le 02-10-2005 à 20:24:54    

Quelqu'un peut m'aider SVP!!!!!!!
J'ai galéré toute la journée dessus et j'ai toujours pas fini :-(
 

Reply

Marsh Posté le 02-10-2005 à 20:38:32    

Code :
  1. public class Pile{
  2.     private int table [];
  3.     public Pile (int pile []){      // constructeur sans intéret
  4.         table=pile;
  5.         int i;
  6.         while (table[i]!=0){
  7.             i++;
  8.         } // Code qui sert à rien, à virer  
  9.         //Empiler
  10.         public int empiler( int élément){ // Tu as oublié de fermer la méthode précédente
  11.        // on voit quand est ce que le tableau n’est plus rempli
  12.        // on teste la taille du tableau
  13.       try{
  14.            int table[i+1]=new int (élement); // non, pas du tout
  15.            throws ExceptionPilePleine; // là, tu dis que la pile est toujours pleine
  16.       }
  17.        catch (ExceptionPilePleine e){
  18.             System.out.println("La pile est pleine" );
  19.        } // C'est celui qui utilise la pile qui doit être pleine.  
  20.     }
  21.     //Depiler
  22.    public int dépiler(){
  23.    try{
  24.        int table[i]= new int (O); 
  25.        throws ExceptionPileVide;
  26. }
  27. catch (ExceptionPileVide e){
  28.   System.out.println("La pile est deja vide" );
  29. }
  30. } // Cette fonction fait n'importe quoi ....
  31. //Taille
  32. public int taille(){
  33. System.out.println("la taille est"+i+); // euuuhhhhhh, non, du tout, c'est quoi ce i ? Et on te demande de la retourner, pas de l'afficher ...
  34. }
  35. //Haut
  36. public int haut(){
  37. System.out.println("l’élément du haut est"+[i]+); // table [i] plutot, si on considère que i est l'indice du haiuut de la pile.
  38. }
  39. //EstVide
  40. public boolean EstVide(){
  41. if i=0
  42. System.out.println("La pile est vide" );
  43. else
  44. System.out.println("La pile n’est pas vide" );
  45. }; // On te demande de retourner si elle est vide, pas de l'afficher
  46. };
  47. }


 
Je crois que tu vas y passer la nuit là ... Ce code ne compile même pas :/
COmmence déjà par bien indenter ton code pour voir les limites de chaque méthodes.
 


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 02-10-2005 à 20:46:02    

Hum, c'est moi ou à aucun moment il ne crée son array? (genre pour placer des données dedans quoi)
 
Parce que je vois la déclaration, mais pas la création de l'espace (ou alors... faut créer un array et le filer en paramètre au constructeur? [:mlc])


Message édité par masklinn le 02-10-2005 à 20:47:35

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 21:01:22    

t'as rien compris là : l'exception tu dois la lancer, pas l'attraper.

Reply

Marsh Posté le 02-10-2005 à 21:02:28    

Enfin techniquement c'est plus un problème d'algo que de java là [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:18:14    

dsl de vous demander ca mais quelqu'un serait motivé pour modifier mon algo et donc me le corriger car comme on me l'a dit, ca va me prendre la nuit? Ca serait cool si quelqu'un pouvait faire ca

Reply

Marsh Posté le 02-10-2005 à 22:21:40    

3 questions:

  • De quelles données a besoin une pile pour fonctionner
  • Quelles opérations peut-on effectuer sur une pile
  • Quelles questions peut-on poser à une pile


Questions complémentaires:

  • Pour chaque opération/question quelles peuvent être les problèmes (erreurs) rencontrés
  • Une pile doit-elle avoir une taille maximale


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:33:53    

je me suis deja posé ces questions mais je crois qu'avec les quelques notions que j'ai je ne peux pas gerer le probleme meme avec votre aide
1) Pour faire fonctionner la pile, il me faut un tableau ou rentrer des données arbitraires
2) On peut ajouter un element a la pile (empiler) ou en elever un seul (depiler)
3) on peut lui demander si elle est vide
                                 quel est son element du haut
                                 sa taille
 
4) On peut avoir des erreurs si on depile alors qu'elle est vide: c'est impossible
     Si on empile alors qu'elleest pleine
5) Je pense que la pile doit avoir une taille.

Reply

Marsh Posté le 02-10-2005 à 22:36:55    

Stormy7391 a écrit :

1) Pour faire fonctionner la pile, il me faut un tableau ou rentrer des données arbitraires


C'était pas la question

Citation :

2) On peut ajouter un element a la pile (empiler) ou en elever un seul (depiler)


oui

Citation :

3) on peut lui demander si elle est vide
                                 quel est son element du haut
                                 sa taille


oui (isEmpty, peek et size), et on peut également lui demander si elle est pleine (isFull) si elle a une taille

Citation :

4) On peut avoir des erreurs si on depile alors qu'elle est vide: c'est impossible
     Si on empile alors qu'elleest pleine


oui

Citation :

5) Je pense que la pile doit avoir une taille.


Une pile a une capacité (le nombre de valeurs qu'elle peut stocker à un moment "n" ), mais rien n'empêche de la faire grandir quand elle atteint et dépasse cette capacité (avec ou sans capacité maximal au delà de laquelle on ne peut aller)


Message édité par masklinn le 02-10-2005 à 22:37:07

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:40:42    

oui mais je ne sais pas coder ces instructions! J'ai fat que trois cours d'ago en JAVA

Reply

Marsh Posté le 02-10-2005 à 22:41:18    

On en est à l'implémentation, arrête de mettre la charrue avant les boeufs et réponds aux questions


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:43:20    

ben j'ai deja repondu!
Pour la premiereje vois pas ce ke tu veux

Reply

Marsh Posté le 02-10-2005 à 22:43:51    

On met quoi dans une pile?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:44:37    

des objets arbitraires! On peut mettre des entiers, des chars, les flottants!!!

Reply

Marsh Posté le 02-10-2005 à 22:49:23    

[:pingouino]
 
non, des données [:pingouino]
 
Bon, donne moi les prototypes de chacune des méthodes définies (opérations et questions) sur une pile: entrées et sorties typées quand on crée une pile d'entiers (int).
 
Et n'oublie pas le ou les constructeur(s)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 22:59:24    

???? je sais pas comment faire la!!!!!
quand tu dis prototype tu veux dire en langage parlé!
Bon ben:
1°on declare un tableau
2°on rentre des entiers dans ce tableau
3° on construit la pile a partir de ce tableau
1° on declare la fonction empiler
2° on cherche le dernier element du tableau
3° on declare l'element a empiler
4°on ajoute cet element dans le tableau si celui ci n'est pas plein

Reply

Marsh Posté le 02-10-2005 à 23:01:25    

Stormy7391 a écrit :

???? je sais pas comment faire la!!!!!
quand tu dis prototype tu veux dire en langage parlé!
 
[blablabla]


Non, c'est pas ça un prototype de fonction, le prototype c'est simplement donner:

  • Le nom de la fonction
  • Le type de valeur de sortie
  • Les entrées


Exemple:

Moo foobar(Foo, Bar)


Pour une fonction demandant en entrée deux objets de type Foo et Bar et sortant un objet de type Moo [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-10-2005 à 23:04:13    

public int empiler(32,int table[]); un truc comme ca?
BOn de toute facon je dois partir on m'attend pour finaliser cet exposer avec autres!
Merci encore de m'avoir aidé!

Reply

Marsh Posté le 02-10-2005 à 23:06:36    

Stormy7391 a écrit :

public int empiler(32,int table[]); un truc comme ca?


non, je me fous éperdument de ton "32" et que le tableau d'entiers du 2e argument s'appelle table


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed