Besoin D'aide [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 10 juin 2011
Statut
Membre
Dernière intervention
8 janvier 2012
-
Messages postés
4
Date d'inscription
vendredi 10 juin 2011
Statut
Membre
Dernière intervention
8 janvier 2012
-
J'ai créé ce programme, et j'en ai pas trouvé où est le probleme :s

Voila Mon Prgrm:

Noeud.h

#include
using namespace std;
template <class T>
class Liste;
template <class T>
class Iterateur;
template <class T>
class ListeIterateur;
template <class T>
class Noeud
{ T donne;
Noeud<T> *suivant;
public:
friend class Liste<T>;
friend class Iterateur<T>;
friend class ListeIterateur<T>;
Noeud();
Noeud(const T &, Noeud<T> *);
T getdonne(){return donne;}
~Noeud();};

Noeud.cpp

#include "Noeud.h"
template <class T>
Noeud<T>::Noeud()
{ suivant = NULL;}

template <class T>
Noeud<T>::Noeud(const T &t, Noeud<T> *n)
{ donne = t;
suivant = n;}

template <class T>
Noeud<T>::~Noeud()
{ delete suivant;}

Liste.h

#include "Noeud.h"
template <class T>
class Iterateur;
template <class T>
class ListeIterateur;
template <class T>
class Liste
{ Noeud <T> *tete;
public:
friend class Iterateur<T>;
friend class ListeIterateur<T>;
Liste();
void Inserer_Element_Debut(T);
int Supprimer_Element(T);
int Liste_Vide();
void Afficher_Liste();
T* Construire_Tableau(T*);
~Liste();
protected:
Noeud <T> *Creer_Noeud(T, Noeud <T> *);};

Liste.cpp

#include "List.h"
template <class T>
Liste<T>::Liste()
{ tete = NULL;}

template <class T>
void Liste<T>::Inserer_Element_Debut(T t)
{ Noeud<T> *N = new Noeud<T>();
N->suivant = tete;
N->donne = t;
tete = N;}

template <class T>
int Liste<T>::Supprimer_Element(T t)
{ if(tete->donne == t)
{ tete = tete->suivant;
return 1;}
else
{ Noeud <T> *N;
N = tete;
while(N->suivant->donne !t && N->suivant NULL)
N = N->suivant;
if(N->suivant == NULL)
return 0;
else
{ N->suivant = N->suivant->suivant;
return 1;}}}

template <class T>
int Liste<T>::Liste_Vide()
{ if(tete)
return 1;
else return 0;}

template<class T>
void Liste<T>::Afficher_Liste()
{ Noeud<T> *N;
N=tete;
int i=1;
while(N)
{ cout << "L'Elemnt Numero " << i << " De La Liste Est: "<< N->donne << endl;
N = N->suivant;
i++;}}

template <class T>
Noeud<T> *Liste<T>::Creer_Noeud(T t, Noeud<T> *N)
{ Noeud<T> n;
n.donne(t);
n.suivant(N);
return n;}

template <class T>
T* Liste <T>::Construire_Tableau(T* t)
{ Noeud<T> *n;
n = tete;
int i=0;
while(n)
{ n = n->suivant;
i++;}
T *tt;
tt = new T[i];
n = tete;
i=0;
while(n)
{ tt[i] = n->donne;
n = n->suivant;}
return tt;}

template <class T>
Liste<T>::~Liste()
{ delete tete;}

Iterateur.h

#include "List.h"
template <class T>
class Iterateur
{ public:
virtual T operator ()() = 0;
virtual void operator =(T) = 0;
virtual int operator !() = 0;
virtual void operator ++() = 0;};

ListeIterature.h
#include "Iterateur.h"
#include
using namespace std;
template <class T>
class ListeIterateur:public Iterateur <T>
{ Liste<T> reference;
Noeud<T> *courant;
Noeud<T> *precedent;
public:
ListeIterateur(Liste<T> &);
~ListeIterateur();
void Inserer_Avant(T);
void Inserer_Apres(T);
void Supprimer_Courant();
T operator ()();
void operator =(T);
int operator !();
void operator ++();
void setcourant (Noeud<T> *n){courant = n;}
Noeud<T>* getcourant(){return courant;}};

ListeIterateur.cpp

#include "ListeIterateur.h"
template <class T>
ListeIterateur<T>::ListeIterateur(Liste<T> &L)
{ reference = L;
courant = reference.tete;
precedent = NULL;}

template <class T>
ListeIterateur<T>::~ListeIterateur()
{ delete courant;
delete precedent;}

template <class T>
void ListeIterateur<T>::Inserer_Avant(T t)
{ Noeud<T> *N;
N = new Noeud<T>;
N->donne = t;
N->suivant = courant;
if(precedent!=NULL)
{ precedent->suivant = N;
precedent = precedent->suivant;}
else
{ reference.Inserer_Element_Debut(t);
precedent = reference.tete;
courant = precedent->suivant;}}

template <class T>
void ListeIterateur<T>::Inserer_Apres(T t)
{ Noeud<T> *N;
N = new Noeud<T>;
N->suivant = courant->suivant;
courant->suivant = N;}

template<class T>
T ListeIterateur<T>::operator()()
{ return courant->donne;}

template<class T>
void ListeIterateur<T>::operator=(T t)
{ courant->donne = t;}

template<class T>
void ListeIterateur<T>::operator++()
{ precedent = courant;
courant = courant->suivant;}

template<class T>
int ListeIterateur<T>::operator!()
{ Noeud<T> *N;
if(precedent==NULL)
{ N = courant;
courant = courant->suivant;
delete N;
return 1;}
if(courant!=NULL)
{ N = courant;
precedent->suivant = courant->suivant;
courant = precedent->suivant;
delete N;
return 1;}
return 0;}

main.cpp

#include "ListeIterateur.h"

template <class T>
ListeIterateur<T>::ListeIterateur(Liste<T> &L)
{
reference = L;
courant = reference.tete;
precedent = NULL;
}

template <class T>
ListeIterateur<T>::~ListeIterateur()
{
delete courant;
delete precedent;
}

template <class T>
void ListeIterateur<T>::Inserer_Avant(T t)
{
Noeud<T> *N;
N = new Noeud<T>;
N->donne = t;
N->suivant = courant;
if(precedent!=NULL)
{
precedent->suivant = N;
precedent = precedent->suivant;
}
else
{
reference.Inserer_Element_Debut(t);
precedent = reference.tete;
courant = precedent->suivant;
}
}

template <class T>
void ListeIterateur<T>::Inserer_Apres(T t)
{
Noeud<T> *N;
N = new Noeud<T>;
//N->suivant = t;
N->suivant = courant->suivant;
courant->suivant = N;
}

template<class T>
T ListeIterateur<T>::operator()()
{
return courant->donne;
}

template<class T>
void ListeIterateur<T>::operator=(T t)
{
courant->donne = t;
}

template<class T>
void ListeIterateur<T>::operator++()
{
precedent = courant;
courant = courant->suivant;
}

template<class T>
int ListeIterateur<T>::operator!()
{
Noeud<T> *N;
if(precedent==NULL)
{
N = courant;
courant = courant->suivant;
delete N;
return 1;
}

if(courant!=NULL)
{
N = courant;
precedent->suivant = courant->suivant;
courant = precedent->suivant;
delete N;
return 1;
}
return 0;
}

7 réponses

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
A mon avis le problème était : Séparation de l'implémentation des modèles et de leurs déclarations dans deux fichiers différents...


Pop70
Messages postés
14958
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 mai 2020
91
1. Bonjour! 7 petite lettres, mais qui font beaucoup pour la suite...
2. C'est ton "programme"? C'est sûr?
3. Les balises Code (3e icone en partant de la droite, juste au-dessus de la zone de texte) pour formater le code, c'est pas mal quand même...
4. Ah? Y'a un problème? Lequel? Désolé, j'ai commandé ma boule de cristal, mais avec les problèmes de transport durant les fêtes, elle n'est toujours pas arrivée....




@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
4
Date d'inscription
vendredi 10 juin 2011
Statut
Membre
Dernière intervention
8 janvier 2012

Merci Pr Votre Réponse, Concernant Ta Premiere Qst, C'est Moi Qui l'A Créé, Enfaite, C'est Un Projet de Fin Du Module de POO, Bien Sur J'ai Demandé Un Coup De Main à Mes Collegues, Mais Toujours ça Fonctionne Pas.

//Noeud.h 
#include  
using namespace std; 
template <class T> 
class Liste; 
template <class T> 
class Iterateur; 
template <class T> 
class ListeIterateur; 
template <class T> 
class Noeud 
{ T donne; 
Noeud<T> *suivant; 
public: 
friend class Liste<T>; 
friend class Iterateur<T>; 
friend class ListeIterateur<T>; 
Noeud(); 
Noeud(const T &, Noeud<T> *); 
T getdonne(){return donne;} 
~Noeud();}; 

//Noeud.cpp 
#include "Noeud.h" 
template <class T> 
Noeud<T>::Noeud() 
{ suivant = NULL;} 

template <class T> 
Noeud<T>::Noeud(const T &t, Noeud<T> *n) 
{ donne = t; 
suivant = n;} 

template <class T> 
Noeud<T>::~Noeud() 
{ delete suivant;} 

//Liste.h 
#include "Noeud.h" 
template <class T> 
class Iterateur; 
template <class T> 
class ListeIterateur; 
template <class T> 
class Liste 
{ Noeud <T> *tete; 
public: 
friend class Iterateur<T>; 
friend class ListeIterateur<T>; 
Liste(); 
void Inserer_Element_Debut(T); 
int Supprimer_Element(T); 
int Liste_Vide(); 
void Afficher_Liste(); 
T* Construire_Tableau(T*); 
~Liste(); 
protected: 
Noeud <T> *Creer_Noeud(T, Noeud <T> *);}; 

//Liste.cpp 
#include "List.h" 
template <class T> 
Liste<T>::Liste() 
{ tete = NULL;} 

template <class T> 
void Liste<T>::Inserer_Element_Debut(T t) 
{ Noeud<T> *N = new Noeud<T>(); 
N->suivant = tete; 
N->donne = t; 
tete = N;} 

template <class T> 
int Liste<T>::Supprimer_Element(T t) 
{ if(tete->donne == t) 
{ tete = tete->suivant; 
return 1;} 
else 
{ Noeud <T> *N; 
N = tete; 
while(N->suivant->donne !t && N->suivant NULL) 
N = N->suivant; 
if(N->suivant == NULL) 
return 0; 
else 
{ N->suivant = N->suivant->suivant; 
return 1;}}} 

template <class T> 
int Liste<T>::Liste_Vide() 
{ if(tete) 
return 1; 
else return 0;} 

template<class T> 
void Liste<T>::Afficher_Liste() 
{ Noeud<T> *N; 
N=tete; 
int i=1; 
while(N) 
{ cout << "L'Elemnt Numero " << i << " De La Liste Est: "<< N->donne << endl; 
N = N->suivant; 
i++;}} 

template <class T> 
Noeud<T> *Liste<T>::Creer_Noeud(T t, Noeud<T> *N) 
{ Noeud<T> n; 
n.donne(t); 
n.suivant(N); 
return n;} 

template <class T> 
T* Liste <T>::Construire_Tableau(T* t) 
{ Noeud<T> *n; 
n = tete; 
int i=0; 
while(n) 
{ n = n->suivant; 
i++;} 
T *tt; 
tt = new T[i]; 
n = tete; 
i=0; 
while(n) 
{ tt[i] = n->donne; 
n = n->suivant;} 
return tt;} 

template <class T> 
Liste<T>::~Liste() 
{ delete tete;} 

//Iterateur.h 
#include "List.h" 
template <class T> 
class Iterateur 
{ public: 
virtual T operator ()() = 0; 
virtual void operator =(T) = 0; 
virtual int operator !() = 0; 
virtual void operator ++() = 0;}; 

//ListeIterature.h 
#include "Iterateur.h" 
#include  
using namespace std; 
template <class T> 
class ListeIterateur:public Iterateur <T> 
{ Liste<T> reference; 
Noeud<T> *courant; 
Noeud<T> *precedent; 
public: 
ListeIterateur(Liste<T> &); 
~ListeIterateur(); 
void Inserer_Avant(T); 
void Inserer_Apres(T); 
void Supprimer_Courant(); 
T operator ()(); 
void operator =(T); 
int operator !(); 
void operator ++(); 
void setcourant (Noeud<T> *n){courant = n;} 
Noeud<T>* getcourant(){return courant;}}; 

//ListeIterateur.cpp 
#include "ListeIterateur.h" 
template <class T> 
ListeIterateur<T>::ListeIterateur(Liste<T> &L) 
{ reference = L; 
courant = reference.tete; 
precedent = NULL;} 

template <class T> 
ListeIterateur<T>::~ListeIterateur() 
{ delete courant; 
delete precedent;} 

template <class T> 
void ListeIterateur<T>::Inserer_Avant(T t) 
{ Noeud<T> *N; 
N = new Noeud<T>; 
N->donne = t; 
N->suivant = courant; 
if(precedent!=NULL) 
{ precedent->suivant = N; 
precedent = precedent->suivant;} 
else 
{ reference.Inserer_Element_Debut(t); 
precedent = reference.tete; 
courant = precedent->suivant;}} 

template <class T> 
void ListeIterateur<T>::Inserer_Apres(T t) 
{ Noeud<T> *N; 
N = new Noeud<T>; 
N->suivant = courant->suivant; 
courant->suivant = N;} 

template<class T> 
T ListeIterateur<T>::operator()() 
{ return courant->donne;} 

template<class T> 
void ListeIterateur<T>::operator=(T t) 
{ courant->donne = t;} 

template<class T> 
void ListeIterateur<T>::operator++() 
{ precedent = courant; 
courant = courant->suivant;} 

template<class T> 
int ListeIterateur<T>::operator!() 
{ Noeud<T> *N; 
if(precedent==NULL) 
{ N = courant; 
courant = courant->suivant; 
delete N; 
return 1;} 
if(courant!=NULL) 
{ N = courant; 
precedent->suivant = courant->suivant; 
courant = precedent->suivant; 
delete N; 
return 1;} 
return 0;} 

main.cpp 
#include "ListeIterateur.h" 

template <class T> 
ListeIterateur<T>::ListeIterateur(Liste<T> &L) 
{ 
reference = L; 
courant = reference.tete; 
precedent = NULL; 
} 

template <class T> 
ListeIterateur<T>::~ListeIterateur() 
{ 
delete courant; 
delete precedent; 
} 

template <class T> 
void ListeIterateur<T>::Inserer_Avant(T t) 
{ 
Noeud<T> *N; 
N = new Noeud<T>; 
N->donne = t; 
N->suivant = courant; 
if(precedent!=NULL) 
{ 
precedent->suivant = N; 
precedent = precedent->suivant; 
} 
else 
{ 
reference.Inserer_Element_Debut(t); 
precedent = reference.tete; 
courant = precedent->suivant; 
} 
} 

template <class T> 
void ListeIterateur<T>::Inserer_Apres(T t) 
{ 
Noeud<T> *N; 
N = new Noeud<T>; 
//N->suivant = t; 
N->suivant = courant->suivant; 
courant->suivant = N; 
} 

template<class T> 
T ListeIterateur<T>::operator()() 
{ 
return courant->donne; 
} 

template<class T> 
void ListeIterateur<T>::operator=(T t) 
{ 
courant->donne = t; 
} 

template<class T> 
void ListeIterateur<T>::operator++() 
{ 
precedent = courant; 
courant = courant->suivant; 
} 

template<class T> 
int ListeIterateur<T>::operator!() 
{ 
Noeud<T> *N; 
if(precedent==NULL) 
{ 
N = courant; 
courant = courant->suivant; 
delete N; 
return 1; 
} 

if(courant!=NULL) 
{ 
N = courant; 
precedent->suivant = courant->suivant; 
courant = precedent->suivant; 
delete N; 
return 1; 
} 
return 0; 
}
Messages postés
14958
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 mai 2020
91
[...]Mais Toujours ça Fonctionne Pas

Comme je te l'ai dis, je n'ai pas de boule de cristal. Va falloir être un peu plus précis pour que l'on t'aide...

@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
4
Date d'inscription
vendredi 10 juin 2011
Statut
Membre
Dernière intervention
8 janvier 2012

Sayé C Résolu Le Prblm :D
Merciii
Messages postés
14958
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 mai 2020
91
Et la solution est?
Merci de cliquer sur "Réponse acceptée" pour fermer le sujet.


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
4
Date d'inscription
vendredi 10 juin 2011
Statut
Membre
Dernière intervention
8 janvier 2012

Wé Pop70, J'ai Inclue Aussi Les Fichier "Liste.cpp" et "IterateurList.cpp" Au Fichier Main, Et "Noeud.cpp" Au Fichier "Liste.cpp"