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 :

convertion fortran a c++, declarer un tableau avec des valeurs successives


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut convertion fortran a c++, declarer un tableau avec des valeurs successives
    Bonjour,

    Je suis en train de traduire un code fortran en c++.
    Je n'arrive pas a trouver comment declarer un tableau avec des valeurs successives (a[]=[12, 1, 2, 3 ... 11].
    En fortran je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTEGER :: a(12)=(/12, (I, I=1,11)/)

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    tu peux pas aussi facilement.
    Mais avec une macro tu peux t'en sortir .
    quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #define CREATE_AND_FILL_ARRAY(type, name, value_max) type name[value_max+1]; for(int _i = 0; _i < value_max; ++_i) name[_i] = _i;
     
    // use
    CREATE_AND_FILL_ARRAY(int, myTab, 12);
    // maintenant on a un int myTab[13] qui a pour valeurs 0...12
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 69
    Points : 142
    Points
    142
    Par défaut
    Beuh, une macro. Moi qui croyait qu'on était dans le forum C++ !

    Selon si tu connais les valeurs à l'avance ou pas, et si la taille de ton tableau est susceptible de changer, il y a plusieurs solutions.

    La technique la plus générique et élégante, si tu ne connais pas les valeurs à la compilation et que le tableau est susceptible de changer, consiste à utiliser un vector et l'algo std::generate(), y'a un exemple ici.

    Si on décortique, y'a deux étapes importantes :
    - tu déclares une classe dont le principal objectif, en gros, est de fournir une fonction "avec mémoire"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct c_unique {
      int current;
      c_unique() {current=0;}
      int operator()() {return ++current;}
    } UniqueNumber;
    - tu créée ton vecteur et tu appelles la fonction generate() avec la fonction que tu viens de créer, ça fait le boulot sur l'intervalle nécessaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::vector<int> mon_vecteur(12);
    std::generate(mon_vecteur.begin(), mon_vecteur.end(), UniqueNumber);

    Si le tableau est de taille fixe, utilise std::array.

    Enfin, si tu connais les valeurs à l'avance ET que tu utilises un compilateur moderne, tu peux utiliser les initializer lists qui permettent d'écrire tout bêtement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<int> mon_vecteur = { 1, 2, 3, 4 };

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Beuh, une macro. Moi qui croyait qu'on était dans le forum C++ !
    Ce sont des outils comme les autres, et qui peuvent s'avérer très pratiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct c_unique {
      int current;
      c_unique() {current=0;}
      int operator()() {return ++current;}
    } UniqueNumber;
    #define CREATE_AND_FILL_ARRAY(type, name, max_value) std::vector<type> name(max_value+1); \
    std::generate(name.begin(), name.end(), UniqueNumber);
    Parce que si je me retrouve à en créer une dizaine de ces tableaux, oui j'employerais une macro, quitte à me faire flageller

    La lisibilité est largement améliorée, AMHA, dans mon code en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE_AND_FILL_ARRAY(int, tab1, 12);
    CREATE_AND_FILL_ARRAY(int, tab2, 11);
    CREATE_AND_FILL_ARRAY(int, tab3, 14);
    // ...
    que si je recopie les 2 lignes à chaque fois.

    D'ailleurs, puisqu'on connait la taille (que je suppose fixe - je ne connais pas fortran), des std::array seront surement mieux.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    merci a tous les deux pour vos réponse.

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

Discussions similaires

  1. Tableau avec des checkboxes
    Par ioiolodie dans le forum MFC
    Réponses: 4
    Dernier message: 19/10/2006, 22h00
  2. Réponses: 7
    Dernier message: 22/09/2006, 15h52
  3. Réponses: 5
    Dernier message: 26/08/2006, 12h14
  4. [CSS] Remplacer un tableau avec des colonnes
    Par mullger dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 22/08/2006, 15h30
  5. Réponses: 4
    Dernier message: 09/03/2006, 09h50

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