IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Vector "un tableau dans un tableau"


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 36
    Points
    36
    Par défaut Vector "un tableau dans un tableau"
    Bonjour ,

    j'essaie de faire quelque chose pour un projet d'ecole , dont :

    ( Gestion d'une billeterie de ticket de concert etc )

    je crée ( pour ma demande ) une class Evenement , une class Artiste

    je voudrai pouvoir crée dynamiquement plusieurs Evenement et dans chaque evenement different Ajouter un plusieurs Artiste qui participeront a l'evenement .

    pour ça j'ai utiliser des vector , mais je galére parce que un tableau d'un tableau c'est farfelu

    voici mon code et j'explique les erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Artiste
    {
    	string name;
     
    public:
    	Artiste(string n="");
    	void afficher();
    };
     
    	class Evenement 
    {
    	string nom;
    	vector<Evenement> evenement;
    	vector<Artiste> artiste;
    public:
    	Evenement(string n="");
    	void afficher();
    	void afficherev(int x);
    	void ajoutevenement(Evenement e);
    	void ajouterartiste(Artiste a);
     
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    Evenement::Evenement(std::string n )
    {
    	nom=n;
    }
     
    void Evenement::afficher()
    {
    	cout<<nom<<endl;
     
    }
     
    void Evenement::ajoutevenement(Evenement e)
    {
    	evenement.push_back(e);
    }
     
    //void Evenement::supprime_dev(std::string n)
    //{
    //	for(unsigned int x=0;x<developpeur.size();x++)
    //	{
    //		if(n==developpeur.getnom())
    //		{
    //			developpeur.erase(x);
    //		}
    //	}
    //}
     
    void Evenement::afficherev(int x)
    {
    	for(unsigned int y=0;y<evenement.size();y++)
    		{
    			if(x==y)
    			{
    			evenement[y].afficher();	
     
    			for(unsigned int x=0;x<artiste.size();x++)
    				{
    		artiste[x].afficher();
     
     
     
    					}
     
    			}
     
     
     
    }
    }
     
    Artiste::Artiste(std::string n )
    {
    	name=n;
    }
     
    void Artiste::afficher()
    {
    	cout<<name<<endl;
    }
     
     
    void Evenement::ajouterartiste(Artiste a)
    {
    	artiste.push_back(a);
    }
     
    Evenement créeevenement()
    {
    	string nom;
    	cout<<"entrezzz le nom"<<endl;
    	cin>>nom;
    	Evenement e(nom);
    	return e;
    }
     
    Artiste créeartiste()
    {
    	string name;
    	cout<<"entrere lr om"<<endl;
    	cin>>name;
    	Artiste a(name);
    	return a;
     
    }
    et mon menu principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    case 14:
     
    		e1.afficherev(3); // Afficher levenement 3 et ses artistes
    		break;
     
     
    	case 18:
     
    		e=créeevenement(); //création d'un evenement
    		e1.ajoutevenement(e); // on rajoute cet evenement au tableau principal
     
    		a=créeartiste(); // on crée l'artiste 
    		e1.ajouterartiste(a); // et on l'ajoute a levenement juste crée
     
    		break;
    le probléme c'est que quand je crée un artiste il ne se met pas uniquement sur levenement demander , donc quand j'affiche un evenement en particulier , tout les artistes entrerr s'afffiche .

    je ne garantie pas la méthode , c'est du bourrinage la j'ai fais ça par moi même il doitt avoir des autres solution peut etre

    en tout cass elle ne marche pas tres bien

    merciii pour votre aide d'avance

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Je pense que ta classe Evenement mélange deux notions de ton application : l'évènement tel que tu le souhaites (une date, un nom, et des artistes) et d'un autre côte elle contient un tableau d'Evenement. Tu devrais séparer les 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Evenement 
    {
    	string nom;
    	vector<Artiste> artiste;
    public:
    	Evenement(string n="");
    	void afficher();
    	void afficherev(int x);
    	void ajouterartiste(Artiste a);
     
    };
    Et ensuite gérer ton tableau d'évènement ailleurs. Par exemple, une classe SalleDeConcert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class SalleDeConcert
    {
    	string nom;
    	vector<Evenement> artiste;
    public:
    	SalleDeConcert(string n="");
    	void ajouter_evenement(Evenement a);
     
    };
    (tu devrais éviter les using namespace dans le .h.).

    Sinon, plutôt qu'un tableau, j'aurais plutôt vu une liste pour les évènements. L'ajout et la suppression peuvent être courant. Peut être idem pour les artistes ? Voir ta classe SalleDeConcert pourrait stocker les évènements dans une std::map indexée par la date de l'évènement ?

  3. #3
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Pour que ça marche, je te conseillerai juste de réindentez ton code correctement. Déjà, je pense que ça t'aiderai bien.

    Ensuite, je te conseil de regarder comment faire une table de hachage (ça ressemble à ce que tu fais, si j'ai bien compris), ou au pire utiliser celle de c++0x alias unordered_map.
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    Salut , mrci pour votre aide

    j'ai fais comme ta dit j'ai créee une nouvelle class avec les vector etc....

    mais maintenant comment je fais pour afficher

    chaque evenement et ses 1 ou plusieurs artistes?

  5. #5
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Il faut surcharger l'opérateur <<.
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    oui mais je pense pas que ça marcherai car mes création sont faites dynamiquement

    pour afficher tout les evenement de la salee je faiss sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void sale::afficherev()
    {
    	 for(unsigned int i=0;i<evenement.size();i++)
        {
            cout << "Element " << i+1 << endl;
            evenement[i].afficher();
    		//artiste[i].afficher();
        }
    }

Discussions similaires

  1. [C#] Comment intégrer un tableau dans un tableau ?
    Par tazmania dans le forum ASP.NET
    Réponses: 57
    Dernier message: 17/08/2006, 16h59
  2. condition dans un tableau dans plone
    Par Abla23 dans le forum Zope
    Réponses: 28
    Dernier message: 19/07/2006, 15h49
  3. tableau dans un tableau
    Par creale10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/05/2006, 01h15
  4. [HTML]tableau dans un tableau
    Par BigBarbare dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/05/2006, 14h35
  5. perte d'éléments dans un tableau dans $_SESSION
    Par jibouze dans le forum Langage
    Réponses: 10
    Dernier message: 15/11/2005, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo