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 :

Problème d'adaptation de tableau dynamique et de structures


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Problème d'adaptation de tableau dynamique et de structures
    Salut, je suis débutant en C++ et j’ai écrit un code simple de recherche d’informations sur un client parmi d’autres en utilisant des structures comme ci dessous:

    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
     
    #include <iostream>
    #include<string>
    #include<vector>
     
    using namespace std;
     
    struct Adresse{string rue; int numero;};
    struct Client{string nom; Adresse adresseClient;};
     
     Client tableauDeClient[3];
     
    int main( ) {
     
        string nomClient;
     
        tableauDeClient[0].nom = "Francis";
        tableauDeClient[0].adresseClient.rue = "Sauerbruch";
        tableauDeClient[0].adresseClient.numero = 12;
     
        tableauDeClient[1].nom = "Eric";
        tableauDeClient[1].adresseClient.rue = "Richard-Dehmel";
        tableauDeClient[1].adresseClient.numero = 9;
     
        tableauDeClient[2].nom = "Alexandre";
        tableauDeClient[2].adresseClient.rue = "Albert";
        tableauDeClient[2].adresseClient.numero = 6;
     
        cout << "Entrer votre nom :";
        cin >> nomClient;
     
        bool testDetection(false);
     
        for (int i=0; i<3; ++i){
     
            if ( nomClient == tableauDeClient[i].nom){
     
            cout <<"Nom du Client : "<< tableauDeClient[i].nom << endl;   
     
            cout <<"Adresse : "<< tableauDeClient[i].adresseClient.rue << " " << tableauDeClient[i].adresseClient.numero << endl;    
     
            testDetection = true;
            }
     
        }
     
        if (testDetection == false){
     
            cout << "Ce client n existe pas "<< endl;
     
        }
     
        return 0;
    }

    Le code fonctionne, mais j’aimerais remplaçer le tableau statique utilisé par un tableau dynamique afin de donner la possibilité plus tard à l’utilisateur d’ajouter des clients. Pour cela, j’ai modifié le code comme ci dessous, mais n’arrive pas à utiliser des push_back() avec ces structures pour l’ajout des trois premiers clients.

    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
     
    #include <iostream>
    #include<string>
    #include<vector>
     
    using namespace std;
     
    struct Adresse{string rue; int numero;};
    struct Client{string nom; Adresse adresseClient;};
     
     vector<Client> tableauDeClient;  // declare un tableau dynamique vide de clients
     
    int main( ) {
     
        string nomClient;
     
    // comment utiliser des push_back() ici pour ajouter ces trois clients?
        tableauDeClient[0].nom = "Francis";
        tableauDeClient[0].adresseClient.rue = "Sauerbruch";
        tableauDeClient[0].adresseClient.numero = 12;
     
        tableauDeClient[1].nom = "Eric";
        tableauDeClient[1].adresseClient.rue = "Richard-Dehmel";
        tableauDeClient[1].adresseClient.numero = 9;
     
        tableauDeClient[2].nom = "Alexandre";
        tableauDeClient[2].adresseClient.rue = "Albert";
        tableauDeClient[2].adresseClient.numero = 6;
     
        cout << "Entrer votre nom :";
        cin >> nomClient;
     
        bool testDetection(false);
     
        for (int i=0; i<tableauDeClient.size(); ++i){
     
            if ( nomClient == tableauDeClient[i].nom){
     
            cout <<"Nom du Client : "<< tableauDeClient[i].nom << endl;   
     
            cout <<"Adresse : "<< tableauDeClient[i].adresseClient.rue << " " << tableauDeClient[i].adresseClient.numero << endl;    
     
            testDetection = true;
            }
     
        }
     
        if (testDetection == false){
     
            cout << "Ce client n existe pas "<< endl;
     
        }
     
        return 0;
    }
    Merci d‘avance

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Bonsoir,

    Après avoir activé le C++11: tableauDeClient.push_back({"Francis", {"Sauerbruch", 12}});.

    Sinon, en mettant un constructeur dans Client il est possible de faire tableauDeClient.push_back(Client("Francis", "Sauerbruch", 12));.

    Ou sans le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Client client;
     
    client.nom = "Francis";
    client.adresseClient.rue = "Sauerbruch";
    client.adresseClient.numero = 12;
     
    tableauDeClient.push_back(client);
     
    client.nom = "Eric";
    client.adresseClient.rue = "Richard-Dehmel";
    client.adresseClient.numero = 9;
     
    tableauDeClient.push_back(client);
    //...

  3. #3
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    Sinon, en mettant un constructeur dans Client il est possible de faire tableauDeClient.push_back(Client("Francis", "Sauerbruch", 12));.
    On préfère généralement tableauDeClient.emplace_back("Francis", "Sauerbruch", 12);, qui est équivalent (si on à le support C++11).

  4. #4
    Invité
    Invité(e)
    Par défaut
    Sous la condition d'avoir le constructeur de Client qui va bien

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci à vous pour votre aide, j'ai pu le faire comme indiqué par jo_link_noir en activant le c++11, et en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableauDeClient.push_back({"Francis", {"Sauerbruch", 12}});
    .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'allocation de tableau dynamique
    Par DuffNut dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2011, 11h17
  2. [xsl-fo]Problème Mise en page tableau dynamique
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 21/05/2007, 14h01
  3. Réponses: 7
    Dernier message: 24/11/2006, 09h56
  4. Problème de libération de tableau dynamique
    Par Rustine dans le forum Delphi
    Réponses: 5
    Dernier message: 18/09/2006, 14h58
  5. Problème de libération de tableau dynamique
    Par cali1983 dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2006, 08h30

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