Un programme c++
simosiso1
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius -
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();
}
# 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();
}
A voir également:
- Un programme c++
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Message programmé iphone - Guide
2 réponses
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.
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.