Partage
  • Partager sur Facebook
  • Partager sur Twitter

passer un tableau a 2 dimensions en argument

j ai une grille[8][8] j' envoie grille et je recupere **grille mais ca ne marche pas

Sujet résolu
    14 mai 2006 à 0:11:18

    voila mon code simplifie :


    int main()
    {
       char grille[nb_colonnes][nb_lignes] = {0};
       print(grille);
    }

    et :

    char print(char** grille)
    {
       int i = 0, j;
       //un peu plus loin ...............

            for( j = 0; j != nb_colonnes; j++)
            {
                //on affiche le chiffre
                printf(" %ld ", grille[i][j]);

                //tous les 3 chiffres, on met une double barre
                if ( (j % 3) == 2 ) putchar('|');
                else putchar(186);
            }
            putchar('\n');
            //et hop la ligne est terminee

    }


    et le code plante a la ligne :
    printf(" %ld ", grille[i][j]);


    vous avez une idee d' ou ca pourrait venir ? :(
    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2006 à 0:17:26

      Voila ton code corrigé:

      void print(char grille[][nb_lignes]);

      int main()
      {
         char grille[nb_colonnes][nb_lignes] = {0};
         print(grille);
      }

      Et
      void print(char grille[][nb_lignes])
      {
         int i = 0, j;
         //un peu plus loin ...............

              for( j = 0; j != nb_colonnes; j++)
              {
                  //on affiche le chiffre
                  printf(" %c ", grille[i][j]);

                  //tous les 3 chiffres, on met une double barre
                  if ( (j % 3) == 2 ) putchar('|');
                  else putchar(186);
              }
              putchar('\n');
              //et hop la ligne est terminee

      }
      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2006 à 0:21:48

        merci nico !!!!!!!!!!!!!!!!!!!!!! :D:D:D
        ca m' aide vraiment en fait je ne savais pas trop comment recuperer ce tableau... :euh:
        je suis trop content ^^
        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2006 à 0:25:26

          Heureux d'avoir pu t'aider. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2006 à 0:48:25

            je peux pousser et te demander la syntaxe pour initialiser mon tableau a 0 :S ?

            car l exemple du cours {0} est prevu pour les tableaux a une seule dimension :S

            edit : lol bon je ferme le sujet demain matin
            • Partager sur Facebook
            • Partager sur Twitter
              14 mai 2006 à 1:39:13

              Le {0} fonctionne egalement avec les tableaux a deux dimemsions, et avec les tableaux de quelques dimensions qu'il soient ;)
              En fait, le {0} parcourt toutes les adresses de memoires reservées pour les cases du tableau et les mets a zero.
              +!NiCo!
              • Partager sur Facebook
              • Partager sur Twitter
                14 mai 2006 à 1:58:50

                mince... ca veux dire que j ai une erreur lorsque je liste mon tableau, car il me sort des valeurs negatives des le debut :S

                ce qui, j imagine, veut dire que je sors de l espace memoire alloue au tableau :'(
                merci nico
                • Partager sur Facebook
                • Partager sur Twitter
                  14 mai 2006 à 7:43:40

                  Ah j'ai du me tromper alors. C'est bizarre car j'ai tres souvent initialisé mes tableaaux comme cela sans erreur.

                  De toute façon, la meilleure methodde reste incontestablement la fonction d'initialisation "faite maison".

                  La voila:

                  -1er cas, nb_colonnes et nb_lignes sont des defines , ce qui est surement le cas vu ton main.

                  void initTableau(char grille[][nb_lignes])
                  {
                      int i=0, j=0;

                      for (j=0 ; j<nb_lignes ; j++)
                          for (i=0 ; i<nb_colonnes ; i++)
                              grille[i][j]=0;
                  }


                  -2eme cas : on passe nb_lignes et nb_colonnes en parametre

                  void initTableau(char grille[][nb_lignes], int nb_lignes, int nb_colonnes)
                  {
                      int i=0, j=0;

                      for (j=0 ; j<nb_lignes ; j++)
                          for (i=0 ; i<nb_colonnes ; i++)
                              grille[i][j]=0;
                  }


                  Voilou. Et encore desolé si je me suis trompé :s

                  +!NiCo!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 mai 2006 à 14:34:03

                    oui ^^
                    en fiat j' avais une erreur je listais des valeurs en dehors de mon tableau,

                    mais meme une fois corrige et verifie,

                    tout n etait pas a zero,
                    donc jm etais fait une ptite fonction init()

                    merci pr ton aide !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    passer un tableau a 2 dimensions en argument

                    × 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