Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme à propos du cours sur les pointeurs

Un tableau de pointeur

Sujet résolu
    21 juillet 2006 à 20:21:45

    Bonjour,

    Tout d'abord un grand bravo pour ce site, cela fait pas mal de temps que je bouquine sur le C++ et que je fais quelques programmes, mais la ca me remets les idées en place.

    Après avoir lu le cours sur les pointeurs, je me suis dis : "Et si je faisais un mini projet(Sudoku) avec plein de pointeurs dedans?"
    Bref en gros maintenant ca ne marche pas.

    je voulais faire un tableau de pointeurs mais je n'arrive pas à voir le contenu de la variable pointé... Soit je sors l'adresse, et en mettant un * devant, je me trouve avec une erreur de segmentation ...

    Voila un extrait du code:

    //prototype de la structure et des fonctions dans le header
    struct uneCase{
    int nbeValeursPossible;
    int valeursPossible[10];
    int valeurEnCours;
    };

    int main(int argc, char *argv[]){
    struct uneCase grillePrincipale[81] = {9, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 0};
    struct uneCase *ligne1[9];

    demandeValeurs(grillePrincipale);
    for(int i = 0; i<9; i++){
    ligne1[i] = &grillePrincipale[i];
    }
    return 0;
    }

    void afficheSuite(struct uneCase *suite[]){
    for(int i = 0; i <= 9; i++){
    printf("%d ", suite[i]);
    // Avec ce code, j'affiche toute les adresses de la ligne...
    // c' est peut etre bien mais ce n'est pas ce que je veux
    // En mettant printf("%d ", *(suite[i])); je me retrouve avec une erreur de segmentation
    // Pourtant, je veux la valeur de ce sur quoi pointe suite[i]

    }
    }

    //pour l'instant je rempli la grille a la main
    void demandeValeurs(struct uneCase grille[]){
    int valeursTemp[26] = {4, 7, 8, 5, 8, 4, 5, 5, 2, 7, 4, 9, 2, 1, 4, 8, 9, 1, 7, 6, 2, 9, 7, 1, 3, 4};
    int indicesTemp[26] = {0, 1, 4, 5, 11, 13, 17, 20, 21, 23, 26, 28, 29, 31, 34, 42, 43, 44, 51, 55, 59, 60, 62, 74, 75, 77};
    for (int i = 0; i<26; i++){
    grille[indicesTemp[i]].valeurEnCours = valeursTemp[i];
    grille[indicesTemp[i]].nbeValeursPossible = 1;
    }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2006 à 8:50:15

      Ca marche, il fallait mettre
      printf("%d ", suite[i]->valeurEnCours);
      En effet, le suite[i] me donne l'adresse de la structure puis j'accede à l'élément voulu grace à -> !!
      Super, je continue.
      Et merci de m'avoir laisser chercher un peu, ca ne fait pas de mal et c'est valorisant de trouver tout seul(Meme si des fois ca peut prendre du temps !).
      d¯_¯b
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 juillet 2006 à 9:08:29

        Bonjour!

        1er- Pensez aux balise zcode ;)

        2eme- Pensez a sauter des espaces.

        3eme- Sa serait sympas 2-3 smiley ? non? :euh:

        Merci de votre compréhension!

        [Ceci est un message demi-écrémé]

        je ferai un excellent modérateur :D
        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2006 à 10:39:58

          //prototype de la structure et des fonctions dans le header
          struct uneCase{
          int nbeValeursPossible;
          int valeursPossible[10];
          int valeurEnCours;
          };

          int main(int argc, char *argv[]){
          struct uneCase grillePrincipale[81] = {9, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 0};
          struct uneCase *ligne1[9];

          demandeValeurs(grillePrincipale);
          for(int i = 0; i<9; i++){
          ligne1[i] = &grillePrincipale[i];
          }
          return 0;
          }

          void afficheSuite(struct uneCase *suite[]){
          for(int i = 0; i <= 9; i++){
          printf("%d ", suite[i]);
          // Avec ce code, j'affiche toute les adresses de la ligne...
          // c' est peut etre bien mais ce n'est pas ce que je veux
          // En mettant printf("%d ", *(suite[i])); je me retrouve avec une erreur de segmentation
          // Pourtant, je veux la valeur de ce sur quoi pointe suite[i]

          }
          }

          //pour l'instant je rempli la grille a la main
          void demandeValeurs(struct uneCase grille[]){
          int valeursTemp[26] = {4, 7, 8, 5, 8, 4, 5, 5, 2, 7, 4, 9, 2, 1, 4, 8, 9, 1, 7, 6, 2, 9, 7, 1, 3, 4};
          int indicesTemp[26] = {0, 1, 4, 5, 11, 13, 17, 20, 21, 23, 26, 28, 29, 31, 34, 42, 43, 44, 51, 55, 59, 60, 62, 74, 75, 77};
          for (int i = 0; i<26; i++){
          grille[indicesTemp[i]].valeurEnCours = valeursTemp[i];
          grille[indicesTemp[i]].nbeValeursPossible = 1;
          }
          }


          faut tout faire bordel...
          :):D;):p:lol::euh::(:o:colere2:o_O^^:-°

          C'est bon les smiley la? non?

          ok je sort

          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2006 à 12:18:34

            Bonjour,


            #include <stdio.h>
            #include <stdlib.h>

            int main(int argc char *argv[])
            {
                    printf("Ok, pas de problème j'ai bien compris apprenti modo");
                    return 0;
            }


            :p

            Pour le premier message, je n'avais pas bien vu tout ca (ni regardé d'ailleurs)

            A Bientot et encore merci :D
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              22 juillet 2006 à 14:18:21

              :D

              [Ceci est un message blancheur totale]
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 juillet 2006 à 14:29:22

                Citation : charly90

                :D

                [Ceci est un message blancheur totale]



                Tu sors

                Image utilisateur

                ==> [ ]

                [Ceci était un messager semi-automatique]
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  22 juillet 2006 à 18:20:04

                  boulay ? moi? pauvre mec...

                  [Ceci est un message assez franc]
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Probleme à propos du cours sur les pointeurs

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown