Surcharge d'opérateur c++
Résolu/Fermé
yokigirl
Messages postés
7
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2008
-
30 janv. 2008 à 13:39
yokigirl Messages postés 7 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 16:26
yokigirl Messages postés 7 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 16:26
8 réponses
Sylar44
Messages postés
20
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
24 août 2008
30 janv. 2008 à 14:21
30 janv. 2008 à 14:21
ca correspond à quoi ca?
Polynome::idm::iterator itr;
l'indice du monome dans le polynome,non?
je crois que c'est un problème d'allocation mémoire que tu as
je vois pas où est-ce que tu défini la longueur du polynome du résultat
Polynome::idm::iterator itr;
l'indice du monome dans le polynome,non?
je crois que c'est un problème d'allocation mémoire que tu as
je vois pas où est-ce que tu défini la longueur du polynome du résultat
yokigirl
Messages postés
7
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2008
30 janv. 2008 à 14:36
30 janv. 2008 à 14:36
un polynome est représenté comme un vecteur de monomes.
idm::iterator itr; est un iterateur sur le vector<monome> du polynome r.
si j'ai ajouté Polynome:: c'est parce qu'a la compilation il ne reconnaissait pas idm alors que je l'ai bien défini dans la classe polynome.
j'avais pensé au probleme d'allocation mémoire mais je pensais qu'il n'était pas nécessaire de définir la taille d'un vector.
Je devrais donc utiliser un push_back: monomes_r.push_back(itr);
le polynome r qui est le resultat du polynome p * le polynome q est au maximum de taille : (nombre de monomes dans q)^(nombre de monomes dans p).
est-ce correct?
merci.
idm::iterator itr; est un iterateur sur le vector<monome> du polynome r.
si j'ai ajouté Polynome:: c'est parce qu'a la compilation il ne reconnaissait pas idm alors que je l'ai bien défini dans la classe polynome.
j'avais pensé au probleme d'allocation mémoire mais je pensais qu'il n'était pas nécessaire de définir la taille d'un vector.
Je devrais donc utiliser un push_back: monomes_r.push_back(itr);
le polynome r qui est le resultat du polynome p * le polynome q est au maximum de taille : (nombre de monomes dans q)^(nombre de monomes dans p).
est-ce correct?
merci.
Sylar44
Messages postés
20
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
24 août 2008
30 janv. 2008 à 14:51
30 janv. 2008 à 14:51
oui c'est bien ca
tu dois utiliser des push_back
je m'en souvient je l'ai fait l'année dernière
et c'est ce que j'avais utilisé
sinon je pense que pour la taille de r tu as faux
je te donne un exemple
si tu as (2x^2+5x+2)(3x+2)
tu auras du x^3
je dirais que la taille du polynome r est le plus grand coeff de p*le plus grand de q+1(pour le x^0)
ici tu as du x^3 donc ton coeff le plus grand est 3, d'où 3 monomes+1
tu dois utiliser des push_back
je m'en souvient je l'ai fait l'année dernière
et c'est ce que j'avais utilisé
sinon je pense que pour la taille de r tu as faux
je te donne un exemple
si tu as (2x^2+5x+2)(3x+2)
tu auras du x^3
je dirais que la taille du polynome r est le plus grand coeff de p*le plus grand de q+1(pour le x^0)
ici tu as du x^3 donc ton coeff le plus grand est 3, d'où 3 monomes+1
yokigirl
Messages postés
7
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2008
30 janv. 2008 à 15:06
30 janv. 2008 à 15:06
l'exemple de la taille est clair merci.
je vais push_back chaque monomes obtenus apres multiplication dans le vecteur contenant les nouveaux monomes de r en esperant qu'il execute.
merci.
je vais push_back chaque monomes obtenus apres multiplication dans le vecteur contenant les nouveaux monomes de r en esperant qu'il execute.
merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sylar44
Messages postés
20
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
24 août 2008
30 janv. 2008 à 15:21
30 janv. 2008 à 15:21
Si tu as besoin d'aide n'hésites pas
je sais que j'ai eu beaucoup de mal avec les push_front et les push_back
quand on a un prof nul ca aide pas
je sais que j'ai eu beaucoup de mal avec les push_front et les push_back
quand on a un prof nul ca aide pas
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
30 janv. 2008 à 16:01
30 janv. 2008 à 16:01
il est logique d'ajouter Polynome:: devant idm, car idm n'a été défini que dans Polynome. Tu pourrai tout aussi bien avoir un idm dans Monome, ou même dans la portée globale, il conviens donc de préciser sa porter, car la surcharge est en dehors de Polynome.
une remarque, je ne pense pas que tu es besoin de int degre, il suffit pour avoir le degré de faire vmonome.size()-1.
Au lieu d'utiliser des push_back(), tu peux aussi déclarer la taille de ton polynome r :
Polynome r(p.degres()*q.degres()+1)
en passant par idm vmonome(p.degres()*q.degres()+1)
Enfin, ce ne sont que des suggestions.
En fait, je n'ai pas bien compris l'intéret de ton monome, un polynome c'est sum(a_j.x^j) il suffit donc d'avoir un simple vecteur des valeurs a_j pour le définir completement.
une remarque, je ne pense pas que tu es besoin de int degre, il suffit pour avoir le degré de faire vmonome.size()-1.
Au lieu d'utiliser des push_back(), tu peux aussi déclarer la taille de ton polynome r :
Polynome r(p.degres()*q.degres()+1)
en passant par idm vmonome(p.degres()*q.degres()+1)
Enfin, ce ne sont que des suggestions.
En fait, je n'ai pas bien compris l'intéret de ton monome, un polynome c'est sum(a_j.x^j) il suffit donc d'avoir un simple vecteur des valeurs a_j pour le définir completement.
yokigirl
Messages postés
7
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2008
30 janv. 2008 à 16:11
30 janv. 2008 à 16:11
merci mais je n'en ai pas eu besoin finalement
voici le reusultat:
Polynome operator* (const Polynome &p,const Polynome &q)
{
Polynome r,s,t;
s=p;
t=q;
idm v;
v = t.getMonomes();
idm::iterator it;
for (it =v.begin(); it != v.end(); ++it)
{
s=p;
s.multiplier(*it);
r.ajouter(s);
}
return r;
}
je pensais ne pas pouvoir utiliser ma fonction multiplier(monome) mais si et c'est plus simple.
je vais commencer la division.
merci.
voici le reusultat:
Polynome operator* (const Polynome &p,const Polynome &q)
{
Polynome r,s,t;
s=p;
t=q;
idm v;
v = t.getMonomes();
idm::iterator it;
for (it =v.begin(); it != v.end(); ++it)
{
s=p;
s.multiplier(*it);
r.ajouter(s);
}
return r;
}
je pensais ne pas pouvoir utiliser ma fonction multiplier(monome) mais si et c'est plus simple.
je vais commencer la division.
merci.
yokigirl
Messages postés
7
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2008
30 janv. 2008 à 16:26
30 janv. 2008 à 16:26
merci pour l'explication de idm je l'ai bien ajouté dans polynome.
le prof a insisté sur le degré alors je travail avec et également sur le fait que les coefficients nuls ne devaient pas apparaitre dans le vecteur.
je vois un monome comme un coefficient, une variable (muette) et un indice, ax^b.
J'ai besoin de cet indice pour ensuite travailler sur les polynomes.
si j'ai 5x^2+3x^4 alors mn vecteur de coefficients est composé de 5 et 3 et non de 0 0 5 0 3
merci.
le prof a insisté sur le degré alors je travail avec et également sur le fait que les coefficients nuls ne devaient pas apparaitre dans le vecteur.
je vois un monome comme un coefficient, une variable (muette) et un indice, ax^b.
J'ai besoin de cet indice pour ensuite travailler sur les polynomes.
si j'ai 5x^2+3x^4 alors mn vecteur de coefficients est composé de 5 et 3 et non de 0 0 5 0 3
merci.