Besoin D'aide

Résolu
ChInOvSki Messages postés 4 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 8 janvier 2012 - 6 janv. 2012 à 16:36
ChInOvSki Messages postés 4 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 8 janvier 2012 - 8 janv. 2012 à 02:09
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

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
7 janv. 2012 à 00:54
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
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2012 à 16:47
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...
0
ChInOvSki Messages postés 4 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 8 janvier 2012
6 janv. 2012 à 17:13
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; 
}
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2012 à 17:21
[...]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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ChInOvSki Messages postés 4 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 8 janvier 2012
6 janv. 2012 à 18:51
Sayé C Résolu Le Prblm :D
Merciii
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 janv. 2012 à 22:20
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...
0
ChInOvSki Messages postés 4 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 8 janvier 2012
8 janv. 2012 à 02:09
Wé Pop70, J'ai Inclue Aussi Les Fichier "Liste.cpp" et "IterateurList.cpp" Au Fichier Main, Et "Noeud.cpp" Au Fichier "Liste.cpp"
0
Rejoignez-nous