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 :

[débutant] Accès aux éléments d'un tableau dans une structure via un pointeur ?


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut [débutant] Accès aux éléments d'un tableau dans une structure via un pointeur ?
    Bonjour,

    J'ai déjà eu recours à votre aide il y a peu, mon problème initial a été résolu [MERCI !!] (mais si quelqu'un confirme que ce que j'ai modifié est juste ce serait extra)

    Mais voilà, il me reste un point noir dans mon programme à cause de mon ignorance du langage C++... Je ne trouve pas de réponse sur le net.

    Je voudrais écrire une structure contenant deux tableaux (mais dynamiques) et un entier, l'entier étant la dimension du tableau. Pour l'instant j'ai mis deux pointeurs et un entier dans ma structure.

    Des extraits du code seront plus parlants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct data 
    {
      int npts;  
      double *freq, *ampl;
    };

    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
     Data>>n;    // Data est un fichier que j'ai ouvert
     
      double *tabfreq = new double[n];
      if (tabfreq == NULL) return 1;
      double *tabampl = new double[n];
      if (tabampl == NULL) return 1;
     
    // Je place les points de mon fichier dans deux tableaux {fréquence - amplitude}
      cpt = 0;
      while(Data >> x >> y)
        {
        tabfreq[cpt] = x;
        tabampl[cpt] = y;
        cpt++;
        if (cpt > n) {cout<<"compteur a atteint la limite"<<endl; break;}
        }
     
      data *params = new data;
      params->npts = n;
      params->freq = tabfreq;
      params->ampl = tabampl;

    Mes questions :

    Est-il possible avec cette méthode d'accéder simplement aux éléments de mes tableaux tabfreq et tabampl via le pointeur params ? (Je précise que je ne fais pas cette structure pour me compliquer la vie mais parce que j'en ai absolument besoin pour entrer mes deux tableaux via un unique pointeur dans une fonction)

    Pour le moment, je n'ai trouvé que ça (en bidouillant...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      for(int i = 0; i<n; i++)
        {
          cout<<"params.freq["<<i<<"] = "<<*(params->freq)<<endl;
          (params->freq)++;
        }
    Mais ça sera inutilisable (ou très difficilement) dans la fonction qui utilise mon pointeur....
    Et puis, je modifie mon poiteur... et ça m'obligerait à le "rembobiner" en faisant une boucle avec Que me conseillez vous ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Arf !!!

    Je crois que j'ai trouvé une réponse simple ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      for(int i = 0; i<n; i++)
        {
          cout<<"params.freq["<<i<<"] = "<<(params->freq)[i]<<endl;
        }

    Vous confirmez ?

  3. #3
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Avec les vector, ce serait plus que simple

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Il faudrait vraiment que je cherche à comprendre comment fonctionnent les vecteurs car tout le monde me dit la même chose
    Mais comme je suis trèèès pressée par le temps (les données arrivent le mois prochain et mon programme est loin d'être prêt...), je me suis cantonnée à ce que je connaissais un peu (en fait, à ce que j'ai appris la semaine dernière...).

    Mais promis, quand je trouve le temps, je me met aux vector ! La modif de mon programme devrait être facile.

    Je passe quand même le sujet en résolu .

    Merci

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Te mettre aux vector, c'est aussi gagner du temps et éviter les fuites mémoire...
    Je me doute bien que tu as poster qu'une partie de ton code ici, aussi j'espère que tu n'as pas oublié les delete[] qui vont avec tes new...
    Typiquement ce dont tu n'as plus besoin avec les vector

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Rassures toi, je n'ai pas oublié les delete[ ] et le delete.
    Merci quand même de le rappeler

    Si tu veux jeter un oeil au programme dans son intégrité, tu peux chercher mon précédent message intitulé "[débutant nul] libération de mémoire tableaux dynamiques" ou quelque chose de ce genre (le dernier message doit dater d'hier)... mais il n'a pas beaucoup d'intérêt. Il ne fait rien de particulier pour le moment mais là je suis passé à l'étape suivante et il commence à faire quelques trucs.

    En tout cas, ce forum est vraiment super ! J'étais persuadée que les débutants avec leurs question bêtes étaient mal vus sur ce genre de forums mais c'est pas le cas apparemment


  7. #7
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Les débutants seront toujours les bienvenus, à condition qu'ils respectent les règles du forum !
    -> Utiliser la FAQ (très complète)
    -> Utiliser la fonction rechercher (on y trouve une mine d'infos intéressantes)

    Bonne continuation !

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

Discussions similaires

  1. Accès a un tableau dans une structure
    Par scarabdore dans le forum C
    Réponses: 10
    Dernier message: 10/07/2014, 08h58
  2. Accès aux ressources d'un jar dans une webapp
    Par Altenide dans le forum Taglibs
    Réponses: 1
    Dernier message: 19/12/2012, 12h24
  3. Afficher les éléments d'un tableau dans une ArrayList
    Par AmeniESC dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 23/03/2012, 12h52
  4. Réponses: 6
    Dernier message: 23/01/2007, 14h08
  5. Acces aux attributs d'un bean dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2006, 10h32

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