Exercice consistant à définir des compteurs cycliques plus ou moins évolués
fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 décembre 2008
-
8 oct. 2008 à 18:29
fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 décembre 2008
-
16 oct. 2008 à 17:14
Bonjour, je suis complètement perdu à la question 3:
Question1 (classe modélisant un compteur cyclique):
- boolean inc() ==> ajoute la valeur 1 au compteur et retourne true si on est repassé à la valeur initiale (sinon retourne false)
- void affiche() ==> affiche la valeur du compteur
Question2 (classe implémentant les mêmes méthodes ci-dessus et modélisant un compteur simple):
- 3 attributs: valeur initiale et maximale (entières), l'unité (de type String)
- un constructeur prenant en paramètre la valeur initiale, la valeur maximale et l'unité.
- boolean inc() ==> idem
- void affiche() ==> idem
Question3 (classe implémentant les mêmes méthodes (mais avec 2 constructeurs) modélisant un compteur composé)
- idem pour les méthodes
- constructeur 1: 1 paramètre de type Compteur_simple
- constructeur 2: 2 paramètres (type Compteur_simple et type Compteur_compose)
- exemple d'utilisation:
Compteur_compose c;
c = new Compteur_compose(new Compteur_simple(0,59,"Minute"), new Compteur_compose(new Compteur_simple(0,23,"Heure),new Compteur_compose(new Compteur_simple(1,365,"Jour"))));
- void affiche() ==> idem
- boolean inc() ==> idem
- Je ne comprends pas comment on identifie le max à la question 1 pour le repasser à la valeur initiale
- Je n'ai rien compris à la question 3
Merci d'avance :)
FARRUGIA Patrick
CompteurCompose copie_cc()
{
if (this.cc == null) /*cas ou le compteur courant est un compteur simple*/
{
CompteurSimple tmp = new CompteurSimple(0,0,"guili"); /*création du compteur simple*/
tmp.copie_cs();
CompteurCompose tmp2 = new CompteurCompose(tmp);
return tmp2;
}
else /*cas ou le compteur courant est un compteur compose*/
{
CompteurSimple tmp1=null;
CompteurCompose tmp2=null;
tmp1.copie_cs();
return tmp2.copie_cc();
}
}
boolean egale(CompteurCompose tmp)
{
if (this.cc == null) /* cas ou le compteur courant est un compteur simple*/
{
if( this.egale(tmp) ) return true; else return false;
}
else /*cas ou le compteur courant n'est pas un compteur simple*/
{
return this.egale(tmp.cc);
}
}
void affiche() { /*affiche a l'envers*/
this.cs.affiche();
if (this.cc != null) this.cc.affiche();
}
void affiche2() { /*affiche a l'endroit*/
}
boolean inc() {
if (this.cc == null) /*cas ou le compteur est au bout*/
{ if (this.cs.co !this.cs.max) this.cs.co this.cs.co + 1;
else { this.cs.co = this.cs.min; }
return true;
}
else /*cas ou le compteur n'est pas au bout*/
{ if (this.cs.co this.cs.max) { this.cs.co this.cs.min; return cc.inc(); } /* cas ou max est atteint pour le parcours du compteur simple*/
else { this.cs.co = this.cs.co + 1; return true; } /* on rajoute 1 si max n'est pas atteint pour le compteur simple courant*/
}
}
public static void main (String args[])
{
CompteurCompose c,d; int i;
c=new CompteurCompose(new CompteurSimple(0,59,"Minute"),new CompteurCompose(new CompteurSimple(0,23,"Heure"), new CompteurCompose(new CompteurSimple(1,365,"Jour"))));
d=new CompteurCompose(new CompteurSimple(0,59,"Minute"),new CompteurCompose(new CompteurSimple(0,23,"Heure"), new CompteurCompose(new CompteurSimple(1,365,"Jour"))));
System.out.println("c"); c.affiche(); System.out.println("d"); d.affiche(); System.out.println("");
for (i = 1; i < 10000; i++) { c.inc(); d.inc(); }
System.out.println("c"); c.affiche();
c.egale(d);
}
}
mais je crois que la copie et l'égalité ne marchent pas dans les 2 classes (si vous pouvez m'aider svp) et je cherche aussi à afficher le compteur composé dans l'autre sens. là en l'occurence des minutes aux jours