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'un tablo[i][j] vers un tablo[k]


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut d'un tablo[i][j] vers un tablo[k]
    Bonjour,
    comment puis je faire passer la valeur de chaque case d'un tableau en 2dimension (tablo[i][j]) vers un tableau en 1 dimension (tablo2[k]) ?

    genre tableau[10][10] vers tableau[100], avec dans chaque case un bool ?

    Merci pour les reponses.

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i=0; i<10; ++i)
        for (int j=0; j<10; ++j)
            tablo2[i*10+j] = tablo[i][j];

  3. #3
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    En parcourant tout ton premier tableau et en ajoutant à chaque fois l'entrée dans le second.
    Pour N = la largeur de ton tableau, et M sa longueur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    t = 0;
    i = 0;
    while (i < N) {
    while (j < M) {
    tablo2[t] = tablo[i][j]
    j++;
    t++;
    }
    i++;
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut
    merci pour ces reponses,
    pour Eucebe,
    ta reponse est interressante seulement ont arrive pour la case tablo[10][10] à tablo2[110] càd hors des limites du tableau.
    pour kazhar, je suis en ce moment même en train de tester cette solution.
    A +

    korp69

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par korp69
    merci pour ces reponses,
    pour Eucebe,
    C'est Eusebe

    Citation Envoyé par korp69
    ta reponse est interressante seulement ont arrive pour la case tablo[10][10] à tablo2[110] càd hors des limites du tableau.
    tablo[10][10] n'existe pas si tu as un tableau de deux dimensions de 10 éléments (de 0 à 9...)

    De façon plus dénérale, si tu déclares un tableau[x][y], tu peux le convertir en un tableau[x*y+y].

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut
    Imaginons les tableaux suivant :
    tablo1[5][5] et tablo2[25]
    selon la formule
    tablo1[0][0]= tablo2[0*0 + 0] ici ça marche
    tablo1[1][0]= tablo2[1*0 + 0] et ça fait aussi 0
    tablo1[2][0]= tablo2[2*0 + 0] encore zero
    ...
    (le dernier, enfin je crois) tablo1[4][4] = tablo2[4*4 + 4] ici 21 et on est loin de la borne, 24.

    J'ai mal du comprendre.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut
    J'ai trouvé la reponse !!! Enfin ma femme
    tablo1[5][5] et tablo2[25] = tablo1[i][j] et tablo2[k]
    La formule est k = j + 5i
    donc
    selon la formule
    tablo1[0][0]= tablo2[0 + 5*0] = 0
    tablo1[1][0]= tablo2[0 + 5*1] = 5
    tablo1[0][1]= tablo2[1 + 5*0] = 1
    tablo1[2][0]= tablo2[0 + 5*2] = 10
    ...
    le dernier tablo1[4][4] = tablo2[4 + 5*4] 24, soit pile poile dans la borne.
    Aaaaah les femmes. Elles m'etonneront toujours. Merci cherie
    Love.
    Korp69

  8. #8
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Oui, c'est ça, bravo à ta femme

    Ce que je te donnais, c'était les dimensions du tableau (x et y). Mais pour accéder à l'élément a,b dans le tableau à une dimension, il faut bien faire a*y+b.
    Désolé de ne pas avoir été plus clair

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

Discussions similaires

  1. [File::Find] Renvoyer un tablo
    Par GLDavid dans le forum Modules
    Réponses: 5
    Dernier message: 17/03/2007, 10h31
  2. Réponses: 10
    Dernier message: 25/11/2006, 13h47
  3. remplir en pourcentage la case d'un tablo..
    Par franfr57 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/04/2006, 11h37
  4. Probleme affich/cach tablo, HELP
    Par rigolman dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 21/10/2005, 14h01
  5. Réponses: 1
    Dernier message: 13/05/2002, 09h19

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