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 :

pointeur d'un tableau a 2 dimension


Sujet :

C

  1. #41
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    On se tue à te l'expliquer (message #6, par exemple) et je t'ai passé un lien. Qu'est-ce que tu n'as pas compris ?
    Voila je suis votre manuel et jobtien:
    syntax error before ']' token

  2. #42
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Voila je suis votre manuel et jobtien:
    syntax error before ']' token
    Je suis censé deviner avec quel code ?

  3. #43
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Je suis censé deviner avec quel code ?
    lors du passage en argument de mon tab.je prefere ne pas montrer pour eviter toute engelade...

  4. #44
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Ce que j'envois...^^^^^^^^^^^^^^^^^^

    . ||||||||||||||||||||||||||||

  5. #45
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    lors du passage en argument de mon tab.je prefere ne pas montrer pour eviter toute engelade...
    Ce que je te demande, mais que tu n'as pas l'air de vouloir comprendre, c'est de réduire ton code au minimum qui montre le problème. C'est quand même pas difficile. Ce minimum doit être complet.

    C'est compliqué de comprendre ça ?

    Je ne veux pas d'une fonction avec 50 paramètres qui n'ont rien à voir avec le problème. T'arrives à comprendre ça ? Se concentrer sur un problème à la fois, c'est le bon sens, non ?

  6. #46
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Ce que j'envois...^^^^^^^^^^^^^^^^^^

    . ||||||||||||||||||||||||||||
    Mamma mia...

    Alors montre moi 3 choses.

    1 - La définition du tableau.
    2 - Le prototype de la fonction réduite au minimum qui nous intéresse
    3 - l'appel de la fonction. (mêmes conditions).

  7. #47
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Ce qui est surprenant, c'est qu'Emmanuel a deja repondu a ta question de nombreuses fois...
    Voici un petit code un peu moche qui initialise un tableau a deux dimensions puis l'affiche sur le terminal. Cela devrait te mettre sur la voie...
    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
     
    #include <stdio.h>
     
    #define DIM1 2
    #define DIM2 3
     
    void init(int tab[][DIM2], int dim1, int dim2)
    {
      int i;
      int j;
     
      for (i=0; i<dim1; i++)
      {
        for (j=0; j<dim2; j++)
        {
          tab[i][j] = i + j;
        }
      }
    }
     
    void display(int tab[][DIM2], int dim1, int dim2)
    {
      int i;
      int j;
     
      for (i=0; i<dim1; i++)
      {
        for (j=0; j<dim2; j++)
        {
          printf("%d ", tab[i][j]);
        }
        printf("\n");
      }
    }
     
    int main(void)
    {
      int tab[DIM1][DIM2];
     
      init(tab, DIM1, DIM2);
     
      display(tab, DIM1, DIM2);
     
      return 0;
    }

  8. #48
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par miron
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include <math.h>
    #include <dos.h>
    #include <string.h>
    #include <windows.h>
    #define VERSION 2.5
    //-----------------------------------------------------------------------------
    void Ordi     (char*,int,int);
     
    //-----------------------------------------------------------------------------
    int main()
    {
      int choix;
      char  voiture_aff[15][11];
      while(choix!=51)
      {
       switch(choix)
       {
                   case 49 : Ordi(voiture_aff[15][11]);break;
                   case 50 : ...
       }
      }
    }
    //-----------------------------------------------------------------------------
    void Ordi(char*voiture_aff)
    { 
      ...
                                                                           *voiture_aff[1][5]='_'; *voiture_aff[1][6]='_';
                                                    voiture_aff[2][4]='/';
     ...
    }
    ...
    Si vous pouviez me dire pour quoi cela ne va pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Warning] passing arg 18 of `demarage' from incompatible pointer type

  9. #49
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par DaZumba
    Ce qui est surprenant, c'est qu'Emmanuel a deja repondu a ta question de nombreuses fois...
    Voici un petit code un peu moche qui initialise un tableau a deux dimensions puis l'affiche sur le terminal. Cela devrait te mettre sur la voie...
    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
     
    #include <stdio.h>
     
    #define DIM1 2
    #define DIM2 3
     
    void init(int tab[][DIM2], int dim1, int dim2)
    {
      int i;
      int j;
     
      for (i=0; i<dim1; i++)
      {
        for (j=0; j<dim2; j++)
        {
          tab[i][j] = i + j;
        }
      }
    }
     
    void display(int tab[][DIM2], int dim1, int dim2)
    {
      int i;
      int j;
     
      for (i=0; i<dim1; i++)
      {
        for (j=0; j<dim2; j++)
        {
          printf("%d ", tab[i][j]);
        }
        printf("\n");
      }
    }
     
    int main(void)
    {
      int tab[DIM1][DIM2];
     
      init(tab, DIM1, DIM2);
     
      display(tab, DIM1, DIM2);
     
      return 0;
    }
    DIM1 et DIM2 sont des nombres ou des variables?
    dsl pas vu les define

  10. #50
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Comme mon main est avant ma fonction j'ei predeclarer ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void demarage(char*,int,int);
    et j'ai le code d'erreur sur la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    demarage(voiture_aff,DIM1,DIM2);
    code d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Warning] passing arg 1 of `demarage' from incompatible pointer type

  11. #51
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    To -> miron

    Je pense qu'il va falloir reprendre ton problême à la base, et arréter de poster n'importe quoi.

    Essai d'abord de faire un code simple avec une fonction main.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  12. #52
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Comme mon main est avant ma fonction j'ei predeclarer ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void demarage(char*,int,int);
    et j'ai le code d'erreur sur la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    demarage(voiture_aff,DIM1,DIM2);
    code d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Warning] passing arg 1 of `demarage' from incompatible pointer type
    Je m'en fous de ce délire. Ce n'est pas ce que je t'ai demandé.

    Je t'ai expressément demandé 3 choses, je veux ces trois choses et rien d'autre, sinon, je vais pas plus loin.

    Si tu n'es pas capable de suivre une consigne, change de métier.

    Et si tu cherches à tester mes limites, sache que tu y'es presque, alors prudence...

  13. #53
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    DIM1 et DIM2 sont des nombres ou des variables?
    dsl pas vu les define
    Des constantes bien sûr. Ce sont les dimensions du tableau. Tu mets ce que tu veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define DIM1 ...
    #define DIM2 ...

  14. #54
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    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
    #include<stdio.h>
    #include<stdlib.h>
    #define DIM1 15
    #define DIM2 11
     
    void demarage(char,int,int);
     
    int main()
    {
        char tab[DIM1][DIM2];
        demarage(tab,DIM1,DIM2);
        system("pause");
    }
     
    void demarage(char tab[DIM1][DIM2],int dim1,int dim2)
    {
         int i;
         int j;
     
         for (i=0; i<dim1; i++)
         {
          for (j=0; j<dim2; j++)
          {
            tab[i][j] = i + j + 97;
            printf("%c ",tab[i][j]);
            }
         }
     
    }
    Voila
    Cela ne fonctionne pas...

  15. #55
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Et si tu cherches à tester mes limites, sache que tu y'es presque, alors prudence...
    Non ce n'est pas du tout ca, loin de la.

  16. #56
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Voila
    Cela ne fonctionne pas...
    Eh bé, tout ça pour en arriver là, c'est laborieux !

    J'ai mes 3 éléments et dans un code complet. OK. Ouf !

    Et si tu mettais un prototype cohérent avec la définition de la fonction, tu ne crois pas que ça irait mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     void demarage(char,int,int);
     void demarage(char tab[DIM1][DIM2],int dim1,int dim2)
    Parce que là, j'ai un peu du mal à voir qui a raison.

    Le reste, ça va.

    Correction, amélioration (pose des questions si tu ne comprends pas) :
    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
     
    #include<stdio.h>
     
    #define DIM1 15
    #define DIM2 11
     
    void demarage(char[][DIM2], int, int);
    void aff(char const [][DIM2], int, int);
     
    int main()
    {
       char tab[DIM1][DIM2];
       demarage(tab, DIM1, DIM2);
       aff(tab, DIM1, DIM2);
    }
     
    void demarage(char tab[][DIM2], int dim1, int dim2)
    {
       int i;
       for (i = 0; i < dim1; i++)
       {
          int j;
          for (j = 0; j < dim2; j++)
          {
             tab[i][j] = i + j + 97;
          }
       }
     
    }
     
    void aff(char const tab[][DIM2], int dim1, int dim2)
    {
       int i;
       for (i = 0; i < dim1; i++)
       {
          int j;
          for (j = 0; j < dim2; j++)
          {
             printf("%c ", tab[i][j]);
          }
          printf("\n");
       }
       printf("\n");
    }

  17. #57
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Eh bé, tout ça pour en arriver là, c'est laborieux !

    J'ai mes 3 éléments et dans un code complet. OK. Ouf !

    Et si tu mettais un prototype cohérent avec la définition de la fonction, tu ne crois pas que ça irait mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     void demarage(char,int,int);
     void demarage(char tab[DIM1][DIM2],int dim1,int dim2)
    Parce que là, j'ai un peu du mal à voir qui a raison.

    Le reste, ça va.

    Correction, amélioration (pose des questions si tu ne comprends pas) :
    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
     
    #include<stdio.h>
     
    #define DIM1 15
    #define DIM2 11
     
    void demarage(char[][DIM2], int, int);
    void aff(char const [][DIM2], int, int);
     
    int main()
    {
       char tab[DIM1][DIM2];
       demarage(tab, DIM1, DIM2);
       aff(tab, DIM1, DIM2);
    }
     
    void demarage(char tab[][DIM2], int dim1, int dim2)
    {
       int i;
       for (i = 0; i < dim1; i++)
       {
          int j;
          for (j = 0; j < dim2; j++)
          {
             tab[i][j] = i + j + 97;
          }
       }
     
    }
     
    void aff(char const tab[][DIM2], int dim1, int dim2)
    {
       int i;
       for (i = 0; i < dim1; i++)
       {
          int j;
          for (j = 0; j < dim2; j++)
          {
             printf("%c ", tab[i][j]);
          }
          printf("\n");
       }
       printf("\n");
    }
    Merci mon probleme venais de ma predeclaration...
    Merci
    Merci
    Merci.
    Ca fesais la journée que je cherchais...
    MerciMerci

Discussions similaires

  1. Problème pointeur dans un tableau à deux dimensions.
    Par Hunken dans le forum Débuter
    Réponses: 2
    Dernier message: 12/03/2015, 11h32
  2. pointeur pour un tableau 2d
    Par olive14 dans le forum C
    Réponses: 6
    Dernier message: 07/05/2005, 15h02
  3. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27
  4. Références et pointeurs sur un tableau
    Par smag dans le forum C++
    Réponses: 2
    Dernier message: 01/03/2005, 20h29
  5. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43

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