Un programme c++

simosiso1 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 loupius -
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   Statut Membre Dernière intervention   11
 
Salut, désinstalle dev-c++ et installe codeBlocs
0
loupius
 
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