Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Allocation dynamique

Tableau à deux dimensions

Sujet résolu
    9 août 2006 à 15:36:37

    Saluts les zéros,
    Mon problème est simple (la solution je ne sais pas :) ). Je veux faire une allocation dynamique pour un tableau à deux dimensions.
    Alors pour un tableau normal on fait:


        int* tableau = NULL;
        tableau = malloc(largeur * sizeof(int));

    Mais pour un tableau à deux dimensions ??
    Merci pour vos futures réponses
    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2006 à 16:39:11

      Je ne suis pas sûr, mais j'aurai fais qqch comme ça :

      int *tableau = NULL;
      int tailleX = 10;
      int tailleY = 10;

      tableau = malloc( tailleX * sizeof(int));

      int i;

      for (i = 0; i < tailleX; i++)
      {

          tableau[i] = malloc(tailleY * sizeof(int));

      }


      Voilà, essaye toujours, mais je promets rien !
      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2006 à 16:49:30

        Voici un code, Je viens de le reprendre j'avais oublie de specifier une dimmension :


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

        int main()
        {
                int **tableau = NULL;
                size_t tailleDim1 = 10, tailleDim2 = 10;
                int i;
                tableau = malloc(tailleDim1 * sizeof(int));
                for (i = 0; i < tailleDim1; i++)
                {
                    tableau[i] = malloc(tailleDim2 * sizeof(int *));
                    tableau[0][i] = i;
                }
                printf("%d\n",tableau[0][4]);
                getchar();
                return 0;

        }



        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2006 à 17:01:20

          Par exemple avec un tableau t de taille n*m:
          #include <stdio.h>

          int main (int argc, char **argv)
          {
                  int n = 2, m = 5, i, j;
                  int **t = malloc(n * sizeof(int*));
                 
                  srand(time(0));
                  for (i = 0; i < n; i++)
                  {
                          t[i] = malloc(m * sizeof(int));
                          for (j = 0; j < m; j++)
                                  t[i][j] = rand() % 9;
                  }
                  // affichage
                  for (i = 0; i < n; i++)
                          for (j = 0; j < m; j++)
                                  printf("t[%d][%d] = %d\n", i, j, t[i][j]);
                 
                  return 0;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            9 août 2006 à 17:12:53

            Merci beaucoup pour vos réponses. Ca marche.
            • Partager sur Facebook
            • Partager sur Twitter

            [C] Allocation dynamique

            × 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