OVH Cloud OVH Cloud

[devoir] attributs de l'appellant.

5 réponses
Avatar
Rakotomandimby (R12y) Mihamina
Bonjour,
Soit une classe

class Rationnel
{
int num;
int den;

[... des méthodes d'instance ...]

public void reduire ()
{
[... reduit le rationnel appelant...]
}

}

La méthode reduire() doit etre void, selon l'énoncé.
Dans cette même classe je doit faire une méthode


boolean equals(Rationnel r)


J'appelle "appellant" l'instance de la classe Rationnel qui sera devant le
point (".") quant on appelera la méthode.

J'ai donc besoin de:

1- réduire le rationnel appelant
2- reduire le rationnel en argument
3- enfin comparer les opérandes
4- retourner le resultat

Je ne sais pas faire 1-.

- Est ce que je devrais plutot écrire une autre fonction de reduction de
Rationnels, qui ne soit pas void, mais qui retounerait un Rationnel?

- est ce que je dois manuellement reduire "den" et "num" par leur
pgcd et ensuite faire la suite (2,3,4)?

2, 3 et 4 se passeront sans
problèmes.

--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)

5 réponses

Avatar
Black Myst
Rakotomandimby (R12y) Mihamina wrote:
Bonjour,
Soit une classe

class Rationnel
{
int num;
int den;

[... des méthodes d'instance ...]

public void reduire ()
{
[... reduit le rationnel appelant...]
}

}

La méthode reduire() doit etre void, selon l'énoncé.
Dans cette même classe je doit faire une méthode


boolean equals(Rationnel r)
Mieux vaudrait surchargé la méthode equals de Object, ca éviterais les

désagrément dans le futur !



J'appelle "appellant" l'instance de la classe Rationnel qui sera devant le
point (".") quant on appelera la méthode.

J'ai donc besoin de:

1- réduire le rationnel appelant
this.reduire();

2- reduire le rationnel en argument
o.reduire();

3- enfin comparer les opérandes
return this.num==o.num && this.den==o.den;

4- retourner le resultat



Avatar
Rakotomandimby (R12y) Mihamina
( Mon, 14 Mar 2005 00:37:27 +0100 ) Black Myst :

1- réduire le rationnel appelant
this.reduire();



punaise... et dire que je me suis cassé la tête 1/2 journée pour ça.

2- reduire le rationnel en argument
o.reduire();



oui.

3- enfin comparer les opérandes
return this.num==o.num && this.den==o.den;



aussi.

4- retourner le resultat



Merci beaucoup.
--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)


Avatar
Rakotomandimby (R12y) Mihamina
( Mon, 14 Mar 2005 00:37:27 +0100 ) Black Myst :

boolean equals(Rationnel r)
Mieux vaudrait surchargé la méthode equals de Object, ca éviterais les

désagrément dans le futur !


oui. mais l'extension des classe n'est pas encore au programme. je pense
que d'ici quelques semaines on aura droit de l'utiliser. Mais pas
maintenant.
En fait j'ai à la fois une avance et du retard en Java par rapport à ma
promo. J'ai déjà fait du Java (pendant 2 ans) il y a 4 ans et entre
temps je n'ai pas pratiqué. j'ai donc perdu la main mais je sais un peu
ce qui se passe ... ;-)

--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)


Avatar
Vincent Lascaux
1- réduire le rationnel appelant
this.reduire();

2- reduire le rationnel en argument
o.reduire();

3- enfin comparer les opérandes
return this.num==o.num && this.den==o.den;



L'appelle à equals modifie les membres des deux objets à comparer ? je
trouve pas ca très propre...
Si on veut conserver cette méthode de comparaison, je travaillerais sur une
copie des rationnels.
Sinon, a/b = c/d <=> a*d = b*c, donc la méthode equals peut s'écrire
return this.num * o.den == o.num * this.den;

--
Vincent


Avatar
Rakotomandimby (R12y) Mihamina
( Mon, 14 Mar 2005 02:12:13 +0100 ) Vincent Lascaux :

L'appelle à equals modifie les membres des deux objets à comparer ? je
trouve pas ca très propre...
Si on veut conserver cette méthode de comparaison, je travaillerais sur une
copie des rationnels.


c'est vrai. mais tant tant qu'à faire, et puisque la modification faite
est une reduction, autnat la "forcer". c'est d'ailleurs ce que nous
faisons dans la vie courante en mathématiques: nous essayons de
travailler avec des rationnels réduits...

Sinon, a/b = c/d <=> a*d = b*c, donc la méthode equals peut s'écrire
return this.num * o.den == o.num * this.den;


Waw. C'est vrai qu'on peut le voir aussi sous cet angle.
Merci.
--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)