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 :

les pointeurs et les structures


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 19
    Points
    19
    Par défaut les pointeurs et les structures
    Salut!!
    Quelle est la différence entre ces trois programme ...
    ُet comment chaque programme a travaille
    -->PLZ Centrée sur la fonction void s(--)
    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
    #include<iostream>
    using namespace std;
     
    struct stag
    {
           char nom[80];
           char prenom[80];
           int age;
           float note;
    };
     
    void s(stag &f)
    {
     
           cout<<"ENTRER LE NOM : "<<endl;
          cin>>f.nom;
          cout<<"ENTRER LE PRENOM : "<<endl;
          cin>>f.prenom;
          cout<<"DONNEZ L'AGE : "<<endl;
          cin>>f.age;
          cout<<"DONNEZ LA NOTE : "<<endl;
          cin>>f.note;
    }
     
    void a(stag f)
    {
         cout<<"LE NOM EST "<<f.nom<<endl;
         cout<<"LE PRENOM EST "<<f.prenom<<endl;
         cout<<"L'AGE EST "<<f.age<<endl;
         cout<<"LA NOTE EST "<<f.note<<endl;
    }
     
    main()
    {
          cout<<"ENTRER LE NOMBRE DES STAGIAIRES "<<endl;
          int n;cin>>n;
          stag *fx=new stag[n];
          for(int i=0;i<n;i++)
          {s(fx[i]);cout<<"\t---"<<endl;}
          for(int i=0;i<n;i++)
          {a(*(fx+i));cout<<"\t---"<<endl;}
     
          cout<<"\n\n";system("pause");
    }
    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
    #include<iostream>
    using namespace std;
    
    struct stag
    {
           char nom[80];
           char prenom[80];
           int age;
           float note;
    };
    
    void s(stag &f,int n)
    {
         for(int i=0;i<n;i++){
          cout<<"ENTRER LE NOM : "<<endl;
          cin>>f.nom;//pourquoi f.nom et pas f[i].nom ??????!!!!!
          cout<<"ENTRER LE PRENOM : "<<endl;
          cin>>f.prenom;
          cout<<"DONNEZ L'AGE : "<<endl;
          cin>>f.age;
          cout<<"DONNEZ LA NOTE : "<<endl;
          cin>>f.note;cout<<"\t---"<<endl;}
    }
    
    void a(stag f,int n)
    {
         for(int i=0;i<n;i++){
         cout<<"LE NOM EST "<<f.nom<<endl;
         cout<<"LE PRENOM EST "<<f.prenom<<endl;
         cout<<"L'AGE EST "<<f.age<<endl;
         cout<<"LA NOTE EST "<<f.note<<endl;cout<<"\t---"<<endl;}
    }
    
    main()
    {
          cout<<"ENTRER LE NOMBRE DES STAGIAIRES "<<endl;
          int n;cin>>n;
          stag *fx=new stag[n];
    
          s(*fx,n);
          
          a(*fx,n);
          
          cout<<"\n\n";system("pause");
    }
    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
    #include<iostream>
    using namespace std;
    
    struct stag
    {
           char nom[80];
           char prenom[80];
           int age;
           float note;
    };
    
    void s(stag *f,int n)//????????!!!!!!!!!!!!!!!!
    {
         for(int i=0;i<n;i++){
          cout<<"ENTRER LE NOM : "<<endl;
          cin>>f[i].nom;
          cout<<"ENTRER LE PRENOM : "<<endl;
          cin>>f[i].prenom;
          cout<<"DONNEZ L'AGE : "<<endl;
          cin>>f[i].age;
          cout<<"DONNEZ LA NOTE : "<<endl;
          cin>>f[i].note;cout<<"\t---"<<endl;}
    }
    
    void a(stag *f,int n)
    {
         for(int i=0;i<n;i++){
         cout<<"LE NOM EST "<<f[i].nom<<endl;
         cout<<"LE PRENOM EST "<<f[i].prenom<<endl;
         cout<<"L'AGE EST "<<f[i].age<<endl;
         cout<<"LA NOTE EST "<<f[i].note<<endl;cout<<"\t---"<<endl;}
    }
    
    main()
    {
          cout<<"ENTRER LE NOMBRE DES STAGIAIRES "<<endl;
          int n;cin>>n;
          stag *fx=new stag[n];
    
          s(fx,n);
    
          a(fx,n);
          
          cout<<"\n\n";system("pause");
    }
    َ

  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
    Salut,
    Ces trois programmes présentent des erreurs :
    1/ Ils ne compilent pas car system n'est pas déclaré dans <iostream>
    2/ la fonction main n'est pas conforme : int main() par expl
    3/ il n'y a pas de retour dans main
    4/ l'allocation n'est jamais libérée
    5/ Utilisation de char[] à la place de std::string
    6/ Utilisation d'allocation dynamique à la place de std::vector

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Merci ...
    Mais le compilateur Dev C++ ne détecte aucun problème...???!!!

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 96
    Points : 85
    Points
    85
    Par défaut
    Il devrait. En tout cas mon Dev C++ detecte ses erreurs.

    Je te conseille de le réinstaller.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    sinon, c'est pas parce que ça compile que c'est correct..

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,
    Citation Envoyé par Simonake Voir le message
    Il devrait. En tout cas mon Dev C++ detecte ses erreurs.

    Je te conseille de le réinstaller.
    En plus:
    • Dev C++ n'est plus développé et se rapproche tout doucement du statut des dinosaures
    • Sauf erreur, il utilise la version 3.x.x de gcc, qui, elle aussi, commence à avoir un age certain
    *Peut-être* devrais tu envisager de mettre un peu tout cela à jour, en passant à Code::blocks comme EDI, et en choisissant la dernière version de MinGW
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Simonake Voir le message
    Il devrait. En tout cas mon Dev C++ détecte ses erreurs.

    Je te conseille de le réinstaller.
    Dev C++ n'est plus mis à jour depuis très longtemps, à penser que le développement s'est arrêter !

    Je te conceil vivement de passer la main.

    il y a cependant plein de EDI 'Environnement de Développement Intégré' que tu pourrai commencer a tester plus facile et plus fiable que Dev.

    sinon pour tes programmes (en évitant de parler des erreurs et à travers une lecture rapide) font plus au moin la même chose 'instanciation de structure' - 'affichage des données en mémoire'

    mais la différence résides dans l'emplacement des boucles principales et des paramètres des fonctions :

    dans le premier bout de code l'affichage et la saisie se fais dans le main grâce à une boucle for :

    for(int i=0;i<n;i++)
    {s(fx[i]);cout<<"\t---"<<endl;}
    for(int i=0;i<n;i++)
    {a(*(fx+i));cout<<"\t---"<<endl;}
    dans le second et le dernier bout de code l'affichage et la saisie se fais par masse de n structures, donc les paramètres de la fonction en plus du tableau alloué dynamiquement des structures :

    stag *fx=new stag[n];
    viens le paramètre n 'naturellement grâce à l'allocation dynamique on a plus de limite en ce qui concerne l'espace du tableau de structures' qui précise le nombre de structure à afficher :

    s(fx,n);
    de toute façon le travail dans la fonction s est quasi le même que celui que fais a à un 'o ou i' de différence (ofstream , ifstream) ^^

    donc après le passage par adresse suivis du passage par copie la fonction imprime ou demande la saisir des données .

    j'espère que j'ai pu t'être utile à la prochaine.

    si tu as toujours des ambiguïtés concernant les passages de paramètres ou autre pose tes questions!

Discussions similaires

  1. question sur les pointeurs dans les structures!
    Par bilal_sayed1 dans le forum Débuter
    Réponses: 1
    Dernier message: 19/02/2010, 07h33
  2. Problème avec les pointeurs et les structures
    Par Suefou dans le forum Débuter
    Réponses: 3
    Dernier message: 27/11/2009, 19h07
  3. Pointeur sur les éléments d'une structure
    Par Marley_T dans le forum C
    Réponses: 16
    Dernier message: 05/05/2008, 23h31
  4. pointeurs, toujours les pointeurs :/
    Par giviz dans le forum C
    Réponses: 16
    Dernier message: 08/10/2003, 15h02

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