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 :

Creer des tableaux.


Sujet :

C++

  1. #1
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut Creer des tableaux.
    Bonjour,

    Je doit créer des tableaux au fur et à mesure que le programme se déroule.
    Est-il possible de créer un tableau (Ex: Tab1), et au fur et à mesure dans une boucle de créer des tableaux Tab2, Tab3 etc...

    Pour ne pas avoir à faire un programme de 10 Km de long, sachant qu'en plus l'on ne sait pas à l'avance le nombre de tableaux exact qu'il faudra...

    Merci.

  2. #2
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Oui c'est possible, mais pourquoi as-tu besoin d'autant de tableau ? Si le nombre de tableau n'est pas connu à l'avance tu dois donc te lancer dans une boucle non définie, c'est à dire while.

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    Dans ce cas verifie quand même la finalité de la boucle

  4. #4
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Je dois rentrer des données triées concernant un scan, et donc je dois créer des tableaux mais une quarantaine environ, c'est pour cela que je me pose cette question...

  5. #5
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Salut,
    tu pourrais donner un peu plus d'informations pour ce que tu veux faire, et le mieux faire un tout petit exemple.
    Car créer 40 tableaux, c'est pas top.

  6. #6
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    En fait je scanne un connecteur contenant des broches et je doit récupérer seulement les infos venant des broches et les placer dans un tableau, et pour chaque broche je doit créer un tableau, seulement selon les connecteurs le nombre de broches diffère donc je voudrais pouvoir par exemple, incrémenter le nom des tableaux (Broche1, Broche2, etc...) au fur et à mesure mais ça me pose un problème car je dois normalement déclarer les tableaux d'abord alors je sais pas...

  7. #7
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Pourquoi devrais-tu déclarer tes tableaux à l'avance ? Tu n'as pas la possibilité d'obtenir le nombre de broche et donc le nombre de tableau pour les déclarer par la suite ?

  8. #8
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Oui une fois le programme executé et les infos sur toutes les broches stockées dans chaque tableau je le saurais mais comment incrémenter le nom des tableaux ?

  9. #9
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Tu ne peux pas, si c'est bien ça que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main()
    {
      int nbTableau = 4, taille = 10;
      for(int i = 0; i < nbTableau; ++i)
        int tabi = new int[taille];
      ...
    
      for(int i = 0; i < nbTableau; ++i)
        delete [] tabi;
      return 0;
    }
    Pour que ça fasse :
    tab1 un tableau de 10 entiers
    tab2 un tableau de 10 entiers
    ...
    tab4 un tableau de 10 entiers

    Ecris le comportement que tu veux pour que nous puissions t'aider.

  10. #10
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Oui ça m'a l'air d'être ce que je cherche !

    voilà mon programme pour l'instant :

    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
     
    void TFonctionInterface::Epuration()
    {
     
    //déclaration des variables
     
    int position = 0, numraie = 0, i = 0, j = 0, s = 0, t = 0,n = 0,m = 0, raiebrochessuiv;
     
    **broche1 = NULL;
     
     
    //Balayage des raies
     
    for (numraie =0;numraie <=1000; numraie++)
    {
     
            // Balayage des positions sur une raie
     
            for (j=0;j<=65537;j++)
            {
     
                    //Si les valeurs sont correctes->stockage dans le tableau Broche
     
                    if (Matrix[numraie][j]>=22743 && Matrix[numraie][j]<=23793)
                    {
     
                    //Augmentation de la taille du tableau
                    n++;
                    **Broche1 = realloc(*Broche1,n * sizeof(int) );
     
                    Broche1[s][t] = Matrix[numraie][j];
                    Matrix[numraie][j] = 0;
                    t++;
                    position = j;
                    }
     
                    //Si fin des valeurs de la première broche dans la raie, sortie de boucle
                    //Test si fond du connecteur
     
                    if (Matrix[numraie][j]>=15768 && Matrix[numraie][j]<=17768 && t !=0)
                    {
                    j = 66000;
                    }
            }
     
            //Réinitialisation de la position pour le balayage de la raie suivante
     
            j = 0;
     
            //Si fin des valeurs pour la première broche, stockage de la raie de début pour
            //le stockage des valeurs des broches suivantes et
            //sortit de la boucle principale
            if (Broche1[1][1] >= 22743 && Broche1[1][1] <=23793 && t == 0)
            {
            numraie = raiebrochessuiv;
            numraie = 1001;
            }
            else
            {
            //Augmentation de la taille du tableau
                    m++;
                    *Broche1 = realloc(Broche1,m * sizeof(int) );
            }
     
            //Incrémentation de la raie et RAZ de la position pour le tableau Broche
     
            s++;
            t=0;
    }
     
     
     
    }

  11. #11
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Parce qu'en plus la taille de chaque tableau que je dois créer diffère selon les broches et je dois donc l'augmenter au fur et à mesure...

  12. #12
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Hum realloc,
    bon alors une autre question, une fois que tes données sont dans les tableaux, tu y accèdes comment ?
    Tu as besoin d'accéder à la 1ere donnée, puis à la 2ème, donc comme une liste, ou d'acceder à un élément au milieu ?

    PS: met ton code entre les balises

  13. #13
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    En fait, une fois les tableaux broche1, broche2, etc.. remplis, ce sont des positions codés convertissables en mm, donc je devrais faire une moyenne de chaque tableau pour avoir une seule valeur par broche, en mm représentative de leur position , au final pour vérifier qu'elles ont toutes été implantées correctement.

  14. #14
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    vector<vector<TonType> >
    Faut savoir faire simple.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  15. #15
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Désolé mais je ne te suis pas...

    vector<vector<TonType> > ?

  16. #16
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    A.
    Si tu n'as besoin que des valeurs moyennes, il te faut 2 cases pour chaque tableau.
    Une pour la somme et une autre pour le nombre de cases, sauf si tu as une variable extérieure qui te donne la taille (à priori n dans ton code).

    Pour eviter de créer m tableaux de taille 2 ou m entiers si tu as le nombre de cases, tu fais juste un tableau qui va contenir 2*m cases (somme suivi du nombre de cases) ou m cases (moyenne de tes positions pour une broche).

    B.
    Si tu as besoin de tes tableaux pour autre chose.
    1. Si tu dois parcourir tes éléments les uns à la suite des autres, prend une liste (evite de faire des realloc, et donc plus rapide), et tu prends un tableau de taille n (n est le nombre de broches) qui te permets de savoir à quel adresse se trouve le premier élément de ta broche.
    Tu auras une liste très grande qui contiendra toutes tes valeurs.

    exemple pour 3 broches :
    la 1ere broche contient k positions, la 2eme l, la 3eme m
    La grande liste :
    [1]->[2]-> ... [k]->[k+1]->[k+2]-> ... [k+l]->[k+l+1]->[k+l+2]-> ... [k+l]->[k+l+1]->[k+l+2]-> ... [k+l+m]->0

    broche 1 : [1]->[2]-> ... [k]->
    broche 2 : [k+1]->[k+2]-> ... [k+l]
    broche 3 : [k+l+1]->[k+l+2]-> ... [k+l+m]->0

    ton tableau contiendra
    tab[0] = adresse de [1]
    tab[1] = adresse de [k+1]
    tab[2] = adresse de [k+l+1]

    2. Si tu dois accéder directement à un élément.
    Utilises ce qu'a dit Luc Hermitte.
    Un vector, c'est un tableau qui se redimensionne tout seul.
    Cela va t'éviter de faire de gerer des pointeurs et éviter de faire des realloc en pagaille.
    Pour l'utiliser il y a un exemple dans la FAQ.

  17. #17
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Littéralement ça donnerait, un vector de vector; vector étant un tableau ^^

  18. #18
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Merci pour le temps passé à m'aider...

    Donc pour ma question de départ qui était l'incrémentation des noms de tableaux pour les créer au fur et à mesure je me sert des instructions données précédemment mais à mon écran dans Borland les "i" des "tabi" n'apparaissent pas en rouge !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main()
    {
      int nbTableau = 4, taille = 10;
      for(int i = 0; i < nbTableau; ++i)
        int tabi = new int[taille];
      ...
     
      for(int i = 0; i < nbTableau; ++i)
        delete [] tabi;
      return 0;
    }

  19. #19
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Mais je crois que je me suis mal exprimer tout à l'heure, une fois mes tableaux broche1, broche2, etc.. remplies avec les valeurs de position je devrais créer de nouveaux tableaux contenant 2 cases, c'est à dire une valeur de position en mm par broche qui sera la moyenne des positions des premiers tableaux et une valeur donnant le numéro de la broche.

  20. #20
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Lol, non mais ça ne fonctionnerat pas.. les "i" dans "tabi" ne sont pas la variable i, "tabi" restera toujours "tabi" dans ton code.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Creer des tableaux du c++ vers cpcdosc+
    Par tmp2316 dans le forum Cpcdos
    Réponses: 4
    Dernier message: 18/10/2014, 18h58
  2. Réponses: 0
    Dernier message: 17/09/2014, 19h29
  3. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30
  4. creer des decors a partir d'un fichier
    Par NICKO dans le forum DirectX
    Réponses: 2
    Dernier message: 21/09/2002, 09h34
  5. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33

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