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

Langage C++ Discussion :

transformer structure deux dimensions en pointeur


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 510
    Billets dans le blog
    1
    Par défaut transformer structure deux dimensions en pointeur
    bonjour,

    je pose le contexte c/c++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #define e_COLMAX        132     /// nombre de colonne maxi  132
    #define e_ROWMAX        43      /// nombre de ligne maxi 43
     
    typedef struct
    {
        unsigned int seq;            /// sequence de traitement
        unsigned int typ;            /// 1-text     2-field     3-fieldo    4-button    5-cadre
        unsigned int len;            /// longueur 
        unsigned int lig;            /// ligne
        unsigned int col;            /// start
        unsigned int end;            /// fin
        unsigned int nrow;           /// nbr row
        unsigned int ncol;           /// nbr col            
    } MEMVIDEO;

    actuellement je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MEMVIDEO TFX[e_ROWMAX][e_COLMAX];
    le programme fonctionne parfaitement mais j'aimerai faire de TFX un pointeur *TFX
    j'y arrive avec une dimension mais j'aimerai que l'on m'explique avec 2 dimensions SVP

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Je ne connais pas le C/C++, mais en langage C++ cela s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::array<std::array<MEMVIDEO,e_COLMAX>,e_ROWMAX>*   TFX;
    En en langage C, on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct TFX_t {
        MEMVIDEO t[e_ROWMAX][e_COLMAX];
    } TFX_t;
    TFX_t*   TFX;

  3. #3
    Membre éclairé

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 510
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Bonjour,

    Je ne connais pas le C/C++, mais en langage C++ cela s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::array<std::array<MEMVIDEO,e_COLMAX>,e_ROWMAX>*   TFX;
    En en langage C, on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct TFX_t {
        MEMVIDEO t[e_ROWMAX][e_COLMAX];
    } TFX_t;
    TFX_t*   TFX;
    j'utilise G++ pour moi il n'y a pas de différence entre C et C++ bien-sur que si mais si je dit cela c'est parce que je prends cela comme un bloc pour développer quelques outils qui me permettront de remonter d'un niveau un peu comme un LG4. j'arrive a faire du web dynamique en G++ de tel manière que dans le programme il n'y est plus que fonctionnel.

    merci j'ai pris ça "TFX_t* TFX;" ....MERCI plus lisible pour moi
    comme cela je peux nettoyer la mémoire. c'était mon hic ... désoler j'apprends C++ seul je suis à la retraite , j'arrive de gros system propriétaire , ou le C est très restrictif .
    ce n'est pas une classe , c'est juste pour un acces direct et mémoriser les chaînes de caractères et leurs attributs , ect.... c'est pour faire un traitement 5250ou 3270 des écrans type terminal...


    j'ai fait aussi des "classe" ( postgresql zoned,...) , j'étudie avec le livre Shaum'S (programmer en C++ et Structure de données en C++) et je m’appuies sur des doc de developpez.. le livre (developpement system sous linux) pour comprendre les mécanismes.


    j'étais entrain de finir le nettoyage du code,et de rendre cela clair, je regardais la mémoire ... maintenant je vais m'attaquer a la sauvegarde avant exit , pour pouvoir ré-afficher .... la génération de code c'est le plus simple j'ai déjà fait cela, ça fait plus de 40 ans.... faire un peu comme GLADE XML GTKBUILDER mon framework est près.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Le C++ moderne est tellement plus puissant que le C à l'ancienne que tu as dû faire dans le passé Tu devrais regarder un peu ce qu'il se fait en pur C++ et ne pas de limiter à son héritage C. J'ai fait la bascule il y a 2 ans et jamais je ne reviendrai en arrière !

  5. #5
    Membre éclairé

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 510
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Le C++ moderne est tellement plus puissant que le C à l'ancienne que tu as dû faire dans le passé Tu devrais regarder un peu ce qu'il se fait en pur C++ et ne pas de limiter à son héritage C. J'ai fait la bascule il y a 2 ans et jamais je ne reviendrai en arrière !
    merci je viens d'acheter "Programmer efficacement en C++ 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14" chez Eyrolles j'aurais pu avec amazones mais c'est ma façon de soutenir des magasins qui m'ont apporté beaucoup lorsque j'étais à Paris. Eyrolles et le Boulinier il y en une autre dans le même quartier je sais y aller mais pas son nom et très à la pointe du métier , j'aime sentir et feuilleter .... mais parfois aussi tomber sur un bouquin des débuts car le fondamentale ne peut-être exclu , mais faire une lib pour formaliser l’accès à des tables afin d'avoir un même processus là je ne peu me passer du C++, je vais suivre ton conseil lire ce livre ne me fera que du bien. mais je préfère le thread ancien que celui du c++ (enfin il correspond mieux a ce que j’attends d'un thread) peut-être que le livre me fera revenir sur des choix que j'ai fait....

    merci du conseil.

  6. #6
    Membre éclairé

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 510
    Billets dans le blog
    1
    Par défaut
    oui cela m'a fait reconsidérer déjà le thread et .... bon maintenant je reprends l'étude....

  7. #7
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Comme le signale @dalfab, tu es en train de faire du C ... il y a les posteurs C++ qui peuvent te le dire un peu longuement

    Sinon lorsque tu déclares un tableau en C, quelque soit le nombre de dimensions, le nom est un pointeur sur la première case.
    Ensuite :
    • dimension 1, c'est le tableau contiguë classique.
    • dimension 2, les lignes sont mises bout à bout. Donc c'est comme-ci tu crées un tableau de dimension 1, d'une taille (nb lignes X nb colonnes). Et si tu veux accéder à un élément directement, soit tu utilises la syntaxe crochet matrix[L][ C ], soit *(matrix + L * nb_columns + C) (<- l'arithmétique pointeur fait le reste)
    • au delà, je ne m'en rappelle plus mais cela fait juste un gros chunk de mémoire.


    Tu peux parcourir ton tableau de dimension N (N > 0) en incrémentant juste un pointeur, allant de la première case jusqu'à (dim 1 x dim 2 x ... x dim N) (<- l'arithmétique pointeur fait le reste)

  8. #8
    Membre éclairé

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 510
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Comme le signale @dalfab, tu es en train de faire du C ... il y a les posteurs C++ qui peuvent te le dire un peu longuement

    Sinon lorsque tu déclares un tableau en C, quelque soit le nombre de dimensions, le nom est un pointeur sur la première case.
    Ensuite :
    • dimension 1, c'est le tableau contiguë classique.
    • dimension 2, les lignes sont mises bout à bout. Donc c'est comme-ci tu crées un tableau de dimension 1, d'une taille (nb lignes X nb colonnes). Et si tu veux accéder à un élément directement, soit tu utilises la syntaxe crochet matrix[L][ C ], soit *(matrix + L * nb_columns + C) (<- l'arithmétique pointeur fait le reste)
    • au delà, je ne m'en rappelle plus mais cela fait juste un gros chunk de mémoire.


    Tu peux parcourir ton tableau de dimension N (N > 0) en incrémentant juste un pointeur, allant de la première case jusqu'à (dim 1 x dim 2 x ... x dim N) (<- l'arithmétique pointeur fait le reste)
    je parlais ... C/C++ parce que j'utilise g++ ou un certain nombre fonction ne sont que dans c++ je n'ai aucunement prétendu faire dans cette demande du c++.

    et ça je sais faire .... pour la mémoire ça nom plus ce n'est pas un problème mon programme fait 1Mo (inclue (framework terminal type 5250 as400) et Sqlite gestion execv smh msg ) et je génère du code source à partir d'un screen designer fait maison .

    par contre j'ai oublier exactement *(matrix + L * nb_columns + C) ok

    merci

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

Discussions similaires

  1. structure deux dimensions
    Par InticIntic dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/01/2011, 09h16
  2. Réponses: 2
    Dernier message: 08/02/2009, 17h56
  3. Tableau en deux dimensions et structure.
    Par PKO06 dans le forum C
    Réponses: 4
    Dernier message: 10/07/2007, 14h22
  4. Tableau deux dimensions et pointeurs
    Par cybersplash dans le forum C
    Réponses: 6
    Dernier message: 06/04/2007, 11h53

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