begin process at 2012 05 28 08:34:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Classe - Liste Chainees


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Classe - Liste Chainees

samedi 23 janvier 2010 à 18:17:57 | Classe - Liste Chainees

snoozriton

Bonjour à tous,
je me retrouve bloqué et je ne vois pas trop comment me décoincer.
Il s'agit d'un exercice à faire. Dans cet exercice nous avons des Etiquettes (ce sera une classe) et un Ensemble d'étiquettes (une autre classe).
Etiquette est composé de d'un prix et d'un info disant si le produit est en solde ou non.
Et je bloque pour faire la liste chainée dans la classe Ensemble...
Si quelqu'un peut m'éclairer.
J'ai mis la déclaration de la liste au sein de la classe. Peut-être dois-je la sortir ?

Code C/C++ :
class Etiquette {
private:
	bool solde;
	float prix;
public:
	void Saisie (bool s, float p){
		solde=s;
		prix=p;
	}
};	





class Ensemble {
private:
	struct maille {
		Etiquette e;
		struct maille *suivant;
	};
	
	typedef struct maille Maillon;
	typedef Maillon * Liste;
	
	//Ensemble (){}
	
	void initialiser (Liste * l){
		*l = NULL;
	}

	void ajout (Liste * l,bool s, float p){
		Maillon * etiq;
		etiq = new (Maillon);
		etiq->e.Saisie(s,p);
		etiq->suivant=*l;
		*l=etiq;
	}	
};


dimanche 24 janvier 2010 à 14:21:37 | Re : Classe - Liste Chainees

uaip

Salut,

Soit tu utilises un conteneur de la STL, soit (si tu en est contraint) tu fais à la main, comme tu as fait.

Avec le conteneur vector de la STL, par exemple :
Code C/C++ :
class Etiquette {
private:
	bool solde;
	float prix;
public:
	void Saisie(bool s,float p) {
		this->solde=s;
		this->prix=p;
	}
};

class Ensemble {
private:
	vector <Etiquette> Liste;
public:
	void initialiser(maille *l) {
		this->Liste.clear();
	}

	void ajout(bool s,float p) {
		Etiquette e;
		e.Saisie(s,p);
		this->Liste.push_back(e);
	}	
};

int main() {
    Ensemble ens;
    ens.initialiser();
    bool s;
    float p;
    //On considère que s et p ont des valeurs (saisies au clavier, etc)
    ens.ajout(s,p);
    return 0;
}


Sinon, je ne comprends pas trop ta manière de faire... je ferais plutôt un truc dans le genre :
Code C/C++ :
class Etiquette {
private:
    bool solde;
    float prix;
public:
    void Saisie (bool s,float p) {
        this->solde=s;
        this->prix=p;
    }
};

typedef struct maille {
    Etiquette e;
    struct maille *suivant;
}
maille;
class Ensemble {
private:
    maille *Liste;
public:
    void initialiser() {
        this->Liste=NULL;//Faire gaffe ici, si ta liste contenait des éléments,
        //ils ne seront pas effacés -> risque de fuite mémoire
    }
    void ajout(bool s,float p) {
        maille *etiq=new(maille);
        etiq->e.Saisie(s,p);
        etiq->suivant=Liste;
        Liste=etiq;
    }
};

int main() {
    Ensemble ens;
    ens.initialiser();
    bool s;
    float p;
    //On considère que s et p ont des valeurs (saisies au clavier, etc)
    ens.ajout(s,p);
    return 0;
}


Le problème avec cette méthode-ci, c'est que l'ordre est inversé (en fait, le membre "suivant" pointe sur l'élément précédent de la liste).
Il y a sans doute des erreurs, je n'ai plus de compilo sous la main. Et tu peux aussi directement intégrer l'équivalent de "maille *suivant" dans la classe Etiquette.

Cordialement, uaip.


Cette discussion est classée dans : liste, classe, ensemble, maillon, etiq


Répondre à ce message

Sujets en rapport avec ce message

liste chaînée et classes [ par yeager ] Bonjour!J'ai programmé pendant deux ans en C et actuellement j'étudie le C++. Pour moi une classe est l'équivalent d'une structure en plus évolué (hér Liste chainée d'objets de classes différentes [ par gillig ] Voici un problème auquel je ne trouve pas de réponse, enfin, rien d'efficace.J'ai une classe CDessin contenant une liste chaînée (CList) de pointeurs classe dans une liste chainé [ par briscard ] Question bête je pense mais bon:Est il possible de passer une classe en liste chainé?n'y a til pas de problème avec les méthodes?merci d'avance.Brisca opengl liste [ par mat74 ] salut je suis en train de creer une classe pr afficher des forme geomethrique en 2d et en 3d avec opengl ( carre triangle cercle cube pave .... )et j' classe et pointeur [ par anduril22 ] Salut j'ai un petit souci, (erreur de compilation) j'ai une classe qui se compose comme ceci :Dans mon fichier test.h***********************typedef st Templates [ par ymerej ] Bonjour à tous,ce TP est à rendre pour demain donc j'espere avoir une réponse ce soir.Le sujet du TP C++ est simple, ecrire 2 classes : liste et maill Suppression d'une instance de classe avec patron [ par jeanlandercy ] Bonjour,Je découvre avec joie les patrons de classe. J'ai dans l'idée de créer un patron de maillon pour liste. La conception, c'est ok, mais la suppr liste circulaire avec la classe <list> [ par maincpp ] Aidez moi svp !!!! je voudrai savoir si on peut modeliser une liste circulaire avec la classe créer une liste à partir d'un arbre [ par morganistic ] bonjour a tous!voila deux structures : une liste et un arbre.je n arrive pas a parcourir un arbre en inserant chaque noeud de l arbre dans une liste.. Probleme de taille d'une liste chainee static qui varie ... [ par rick_moins_moins ] Bonjour,j'ai besoin de faire  une liste chainee dans mon programme afin de cataloguer tous les objets de mon projet. Pour cela ma liste chainee est st


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales