Un programme c++

Fermé
simosiso1 Messages postés 2 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 15 février 2009 - 15 févr. 2009 à 00:55
 loupius - 15 févr. 2009 à 18:50
Bonjour, j'ai fais un programme sur dev c++mais il ne détecte aucune erreur , lorsque je compile :un message qui dit que windows a rencontré un problème. s'il vous plais si quelqu'un peut m'aider voici le programme

# include <iostream.h>
# include <conio.h>
#include <stdlib.h>
//------------------------------------------------
class maillon
{
friend class list;
public:
int donnee;
maillon * suivant;
public:
//------------------------------------constructeur-----------------

maillon(int a){donnee=a;suivant=NULL;}

//-----------------------------constructeur par recopie------------

maillon(maillon &m)
{ if(this!=&m)
{donnee=m.donnee;
suivant=m.suivant;
}
}

//-----------------------------destructeur------------------------

~maillon()
{delete suivant;
}
};
//------------------------------------------------------------------------------
class list
{
maillon* mall ;
int nb_mall;
public:
//-----------------------------constructeur------------------------

list()
{mall=NULL;
nb_mall=0;}

//---------------------constructeur par recopie--------------------

list(list &l)
{
if(this!=&l)
{
maillon* ma=l.mall;
while(ma!=NULL)
{
insererfin(ma->donnee);
ma=ma->suivant;
};
}
}

//---------------------destructeur---------------------------------

~list(){delete mall;}

//------------------insertion en fin du liste----------------------

void insererfin(int d)
{
maillon *p=new maillon(d);
maillon*pi=mall;
while(pi->suivant!=NULL)
{
pi=pi->suivant;
};
pi->suivant=p;

}

//-------------------affichage de la liste-------------------------

void affich()
{ maillon *g=mall;
while(g!=NULL)
{ cout<<g->donnee<<endl;
g=g->suivant;
};

}



};
int main()
{
list li;
li.insererfin(4);
li.insererfin(5);
li.affich();



getch();
}

2 réponses

---vivi--- Messages postés 76 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 23 octobre 2009 11
15 févr. 2009 à 17:33
Salut, désinstalle dev-c++ et installe codeBlocs
0
Mais non t'as pas besoin de désinstaller quoique ce soit !
C'est ton programme qui est faux et il est quand même logique que le compilateur ne signale pas d'erreur. En effet celui-ci ne détecte que les erreurs de syntaxe mais en aucun cas les erreurs dûes à des programmes mal faits.
Ici l'erreur vient du fait qu'au premier passage dans la fonction insererfin (que tu devrais plutôt appeler 'insererFin'), 'mall est NULL donc pi est NULL... alors que fera '(pi->suivant != NULL)' !!! et que fera 'pi->suivant = p;' !!!
Plantage assuré donc tout est normal.
0