A voir également:
- [C ++] Erreur de segmentation
- Erreur 0x80070643 - Guide
- Segmentation fault (core dumped) ✓ - Forum Programmation
- Code erreur f3500-32 ✓ - Forum Bbox Bouygues
- Erreur 10016 epson - Forum Imprimante
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
3 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
11 déc. 2006 à 08:56
11 déc. 2006 à 08:56
Salut.
Sans être sur, je pense que ton pb vien de là:
*p1=*(p2->sui());
tu affecte à p1 le suivant de p2.
Mais le suivant du suivant de p2 n'est pas défini.
Donc lorsque tu appel le suivant de p1, il y a une erreur.
Sans être sur, je pense que ton pb vien de là:
*p1=*(p2->sui());
tu affecte à p1 le suivant de p2.
Mais le suivant du suivant de p2 n'est pas défini.
Donc lorsque tu appel le suivant de p1, il y a une erreur.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
11 déc. 2006 à 12:31
11 déc. 2006 à 12:31
je ne sais pas trop.
Je trouve toujours ça peut clair les listes Chainés. Il serait peut être mieux d'utiliser la STL.
Cell&Cell::milieu( Cell& c, Cell& d)
{
double z=sqrt(((d.t())-(c.t())/4))*gauss();
x1=(c.x()+d.x())/2+(z);
y1=(c.y()+d.y())/2+(z);
t1=(c.t()+d.t())/2;
sui(c.sui());//donc this->suiv=c.suiv equivalent d'ailleur à sui(d).
return*this;
};
en fait, p2.suiv.suiv n'est pas déclarer.
Donc lorsque tu fait p1=p2.suiv, p1.suiv n'est pas déclarer.(p1.suiv=p2.suiv.suiv suivant l'operateur =) {J'ai volontairement omi tous les *)
Je ne voi vraiment pas ou tu initialise le troisième niveau de ta liste.
Je trouve toujours ça peut clair les listes Chainés. Il serait peut être mieux d'utiliser la STL.
Cell&Cell::milieu( Cell& c, Cell& d)
{
double z=sqrt(((d.t())-(c.t())/4))*gauss();
x1=(c.x()+d.x())/2+(z);
y1=(c.y()+d.y())/2+(z);
t1=(c.t()+d.t())/2;
sui(c.sui());//donc this->suiv=c.suiv equivalent d'ailleur à sui(d).
return*this;
};
en fait, p2.suiv.suiv n'est pas déclarer.
Donc lorsque tu fait p1=p2.suiv, p1.suiv n'est pas déclarer.(p1.suiv=p2.suiv.suiv suivant l'operateur =) {J'ai volontairement omi tous les *)
Je ne voi vraiment pas ou tu initialise le troisième niveau de ta liste.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
11 déc. 2006 à 17:34
11 déc. 2006 à 17:34
je n'ai pas bien compris ce que tu fait, donc je ne te propose rien. Par contre, je peu t'aider à comprendre l'erreur :
for(int j=0;j<i;j++)
{
(*p2).milieu(*p1,*(p1->sui()));
B0.sui(p2);
*p1=*(p2->sui());
}
supposons i>1
quand j=0, tu fait :
*p1=*(p2->sui());
ce qui veux dire que *(p1.suiv)=*(p2.suiv.suiv) ok?
or *(p2.suiv.suiv) n'est pas déclarer.
Dans la boucle "d'après" lorsque j=1,
(*p2).milieu(*p1,*(p1->sui()));
tu as un appel à p1.suiv qui n'est pas déclarer.
Je pense que l'erreur vien de là.
for(int j=0;j<i;j++)
{
(*p2).milieu(*p1,*(p1->sui()));
B0.sui(p2);
*p1=*(p2->sui());
}
supposons i>1
quand j=0, tu fait :
*p1=*(p2->sui());
ce qui veux dire que *(p1.suiv)=*(p2.suiv.suiv) ok?
or *(p2.suiv.suiv) n'est pas déclarer.
Dans la boucle "d'après" lorsque j=1,
(*p2).milieu(*p1,*(p1->sui()));
tu as un appel à p1.suiv qui n'est pas déclarer.
Je pense que l'erreur vien de là.
11 déc. 2006 à 10:57
pour le suivant de p2 je lui affecte "le pointeur suiv de p1 avec la fonction milieu" ce qui correspond pour le premier tour du double boucle à B0 qui pointe lui vers B1"
est ce moi qui a mal coder???
ou bien que tu a mal compris??
bien cordialement