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 :

une fonction pour transferer des elements d'un group a un autre


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Points : 53
    Points
    53
    Par défaut une fonction pour transferer des elements d'un group a un autre
    Bonsoir tout les monde

    Voila pour tout expliquer mon code est en relation avec la notion des listes chainees en c++.

    Je n'ai pas reussi a faire transferer des elements enregistres d'un set "e" a un set "c" par exemple.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    //transport data from set to another
    void assign(SetType e,SetType c){
    for(int i=0; i<=index; i++) {
    e.list[i]=c;}
    }
    donc voila la fonction presumee

    et le code en entier :
    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
     
     
    //passing values from set to another one
     
    # include <iostream.h>
    # include <conio.h>
     
    class DataType {
                      //create list
    						private:
                      int list;
     
                      public:
                      // constructor
                      DataType(){list=NULL;}
                      DataType(int z){list=z;}
                      int GetValue(){return list;}
     
                      };
     
    class SetType {
    private:
    DataType list[3];
    int index;
     
    public:
    void create(){index=-1;}
     
     
    //add elements
    void AddElement(DataType e){
    if(index<3) list[++index]=e;}
     
    //display elements
    void display() {
     
    for(int i=0; i<=index;i++)
    cout<<list[i].GetValue()<<endl;}
     
     
    //transport data from set to another
    void assign(SetType e,SetType c){
    for(int i=0; i<=index; i++) {
    e.list[i]=c;}
    }
    };
     
    void main() {
    DataType e1(10), e2(20), e3(30);
    SetType group1, group2;
    group1.create();
    group2.create();
    group1.AddElement(e1);
    group1.AddElement(e2);
    group1.AddElement(e3);
    group1.display();
    group1.assign(group1,group2);
    cout<<"----------------"<<endl;
    group2.display();
     
    getch();
    }

    MERCI BEAUCOUP POUR LE COUP DE MAIN

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Passe tes paramètres par référence si tu veux qu'ils soient modifiés par la fonction.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Points : 53
    Points
    53
    Par défaut oui
    Citation Envoyé par Laurent Gomila
    Passe tes paramètres par référence si tu veux qu'ils soient modifiés par la fonction.
    merci pour ta reponse mais ce dont j'en ai besoir j'ai un doute dans la ligne suivante "un probleme de syntax".
    merci.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    e.list[ i ] et c n'ont pas le même type. Le premier est un DataType et le second est un SetType.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Laurent Gomila
    e.list[ i ] et c n'ont pas le même type. Le premier est un DataType et le second est un SetType.
    oui ils sont de deux classes differentes mais comment creer 2 ensembles e et par exemple c ?

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Honêtement je ne comprend rien, tu devrais prendre un peu de temps pour expliquer clairement ce que tu veux.

    De ce que j'ai compris ce serait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void assign(SetType& e, const SetType& c)
    {
        for (int i = 0; i <= c.index; i++)
            e.list[i] = c.list[i];
    }

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Laurent Gomila
    Honêtement je ne comprend rien, tu devrais prendre un peu de temps pour expliquer clairement ce que tu veux.

    De ce que j'ai compris ce serait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void assign(SetType& e, const SetType& c)
    {
        for (int i = 0; i <= c.index; i++)
            e.list[i] = c.list[i];
    }


    J'ai essaye ton code mais le resultat ne retranscrit pas les elements dans le nouveau set c.
    pour bien m'expliquer.

    il s'agit de faire une fonction assign pour transferer les elements d'un ensemble e dans un ensemble c.

  8. #8
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    Par défaut
    bon deja, question design, pourquoi ne pas surcharger l'operator=() plutot que de faire une fonction assign() ?

    ensuite, si tu veux copier entierement le contenu d'un set dans un autre, pkoi ne pas utiliser les algorithmes de la STL ?

    par ex, si tu veux copier set1 dans set2, en effacant son contenu préalablement, tu peux faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set2.clear();
    std::copy(set1.begin(), set1.end(), std::back_inserter(set2.begin()));

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 112
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par toxcct
    bon deja, question design, pourquoi ne pas surcharger l'operator=() plutot que de faire une fonction assign() ?

    ensuite, si tu veux copier entierement le contenu d'un set dans un autre, pkoi ne pas utiliser les algorithmes de la STL ?

    par ex, si tu veux copier set1 dans set2, en effacant son contenu préalablement, tu peux faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set2.clear();
    std::copy(set1.begin(), set1.end(), std::back_inserter(set2.begin()));
    merci pour ta reponse

    justement le but de l'exo demande consiste a faire une fonction assign(). Etant donne que je debute encore en structure de donnes, je prefere garder une seule methode pour bien l'assimiler. merci

Discussions similaires

  1. Segfaultsur une fonction pour lire des commandes systemes
    Par Mika2008 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/06/2010, 16h22
  2. Réponses: 12
    Dernier message: 09/11/2009, 20h56
  3. Réponses: 7
    Dernier message: 09/02/2009, 15h28
  4. Créer une fonction pour remplacer des caractères
    Par virtuadrack dans le forum C++
    Réponses: 4
    Dernier message: 11/09/2008, 15h52
  5. Réponses: 1
    Dernier message: 10/09/2006, 17h09

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