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 :

Nom de variable en fonction d'une itération


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut Nom de variable en fonction d'une itération
    Bonjour tous,

    je voudrais savoir comment on peut faire en C++ pour qu'a chaque itération on est une nouvelle variable:

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (....)
    mavariable{i}=....;
    i=i+1;
    end
    je sais que l'on peut utiliser des tableaux pour des choses dans ce genre mais moi ce n'est pas ce que je veux.
    en effet pour chaque itération je veux réaliser un objet nommé: objet0, objet1, objet3....

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    ouais, faire un tableau quoi.
    Je vois pas pourquoi tu aurais besoin de n objets de nom differents, les éléments d'un tableau sont bien suffisant.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    A part en utilisant des templates ( et encore pas sur) je ne vois comment on peut procéder pour se genre de chose.
    Tu peux créer des nouveaux objets en utilisant les pointeurs, mais tu seras obligé de stocker une référence sur ces objets (pour pouvoir les utiliser) et à part un tableau ou un conteneur de la STL je ne vois comment tu peux faire.
    Sinon, ce que tu veux faire s'approche plus du script ( Il faut savoir que une fois compilé, les noms de variables n'existe plus dans ton code, tu as seulement accés à des adresses mémoires.)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci de vos réponses,
    il y a peut etre une autre façon de faire mais je ne vois pas

    ==> je vous montre mon morceau de programme:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    #include "Matrix.h"
    #include "Precipitate.h"
    
    using namespace std;
    
    vector <Matrix> A;
    vector <Precipitate> B;
    int i=0, j=0;
    
    int main()
    {
        string mon_fichier = "data.txt";  // je stocke dans la chaîne mon_fichier le nom du fichier à ouvrir
        ifstream dataBase(mon_fichier.c_str(), ios::in);
        if(dataBase)  // si l'ouverture a réussi
        {
            while (!dataBase.eof()) //temps que l'on a pas tout lu
            {
                  if (!dataBase.eof())
                  {
                      string command, dump;
                      dataBase >> command;
    
                      if (command=="#")
                      {
                          getline(dataBase,dump);
                          cout << dump << endl;
                      }
                      else if (command=="matrix")
                      {
                          string MatrixName;
                          double LatticeParameter_M, AtomicVolume_M;
                          cout << "matrix command invoqued"  << endl;
                          dataBase >> command;
                          MatrixName = command;
                          dataBase >> LatticeParameter_M;
                          LatticeParameter_M = LatticeParameter_M;
                          dataBase >> AtomicVolume_M;
                          AtomicVolume_M = AtomicVolume_M;
    //                      cout << MatrixName << " "<<LatticeParameter_M << " " << AtomicVolume_M << endl;
                          A.push_back(Matrix donnees_matrice{i}(MatrixName, LatticeParameter_M, AtomicVolume_M));
                          i=i+1;
    
                      }
                       else if (command=="precipitate")
                       {
                          string PrecipitateName;
                          double LatticeParameter_P;
                          cout << "precipitate command invoqued"  << endl;
                          dataBase >> command;
                          PrecipitateName = command;
                          dataBase >> LatticeParameter_P;
                          LatticeParameter_P = LatticeParameter_P;
    //                      cout << PrecipitateName << " " << LatticeParameter_P << " " << endl;
    
                          B.push_back(Precipitate donnees_precipites{i}(MatrixName, LatticeParameter_M, AtomicVolume_M));
                          j=j+1;
                       }
                       else
                       {
                       }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            else  // sinon
            {
                 cout << "Impossible d'ouvrir le fichier !" << endl;
            }
            dataBase.close();  // on ferme le dataBase
    
    
            return 0;
    }
    en fait je veux faire deux vector A et B, qui contiennent divers objets qui sont générés à chaque itérations

    voila le fichier texte qui sert de base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # premier type de donnees
    matrix ferrite 2.85 1e-30
    matrix aluminium 1.85 1.2e-30
     
    # deuxieme type de donnees
    precipitate VC 4.1
    precipitate Mg2Si 4
    precipitate Mg5Si6 4.7

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Tu te fourvoies là

    Ce que tu souhaites faire, c'est empiler des objets dans un tableau - tu n'a strictement aucun besoin de stocker des noms de variables différents. Quand tu fait un push_back(), tu ne stocke pas une variable, tu stocke son contenu. Dans ton cas (le premier) tu stocke une matrice - quel besoin a tu de lui donner un nom particulier ? De toute façon, tu vas ensuite y accéder à partir du tableau, pas à partir d'une variable qui se serait créé toute seule

    (et non, il n'est pas possible de le faire non plus avec des templates. Ni avec des macros. Et c'est tant mieux, parce que ça n'a pas beaucoup de sens ).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci d'avoir pris le temps de répondre,

    donc si je comprends bien il suffit de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A.push_back(Matrix (MatrixName, LatticeParameter_M, AtomicVolume_M));
    ?

  7. #7
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    oui.

    Si tu veux optimiser le temps de traitement tu peux stocker des pointeurs, mais sinon c'est bien celà

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

Discussions similaires

  1. Nom de variable, en fonction d'une itération
    Par maximefabas dans le forum ActionScript 3
    Réponses: 10
    Dernier message: 21/06/2010, 16h49
  2. Nom de variable créé à partie d'une variable
    Par vargasvan dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/09/2007, 13h37
  3. Réponses: 17
    Dernier message: 15/04/2007, 12h28
  4. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00
  5. Réponses: 4
    Dernier message: 16/02/2006, 10h40

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