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 :

Intitialisation d'une structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mouchT8
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut Intitialisation d'une structure
    Bonjour,

    Je vais essayé de résumé mon exercice ^^

    J'ai un tableau de villes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char villes[NB_VILLES][LONGNOM]= {"paris","arras","reims","dijon","metz"};


    Et je doit également avoir un tableau de chemins.

    J'ai donc la structure CHEMIN suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct chemin{
    short ville_suiv; // numéro de la ville suivante
    short distance; // distance entre les 2 villes
    }CHEMIN[NB_VILLES][NB_CHEMINS];
    Je doit obtenir le tableau ci dessou:


    --------------------CHEMINS-----------
    Villes|---0-------1--------2------3-----
    ---- |----------------------------------
    0----|1 , 170 | 2 , 140| 3 , 145| -1 , 0
    1----|
    2----|
    3----|
    4----|

    Je rempli que la première ligne excuser moi ^^

    Ainsi ici nous avons pour la première ligne le chemin numéro 0 au départ de la ville (0) jusqu'à la ville (1) pour une distance de 170 km
    Ou encore un départ de ville 0 à ville 3 pour 145 km au chemin numéro 2

    Vous suivez??

    Au passage, -1 signifit qu'il n'y a rien...

    Je doit donc initialiser cette chose !!!!!

    J'ai fait quelque chose comme ça mais ça ne fonctionne pas évidemment puisque c'est très moche:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //initialisation de notre tableau de chemin à 5 villes(paris, arras, reims, dijon, metz) et 4 chemins
     
    CHEMIN chem[5][4]={{1,170},{2,140},{3,315},{-1,0}},{{0,170},{4,345},{2,160},{-1,0}},{{0,140},{1,160},{4,175},{-1,0}},
    {{0,315},{4,235},{-1,0},{-1,0}},{{1,345},{2,175},{3,235},{-1,0}};

    Je n'ai encore jamais initialisé de tableau de structure et pour un commencement je suis plutot... perdue !!



    Quelqu'un peut-il m'aider??

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Concernant le tableau de structure, tu peux faire quelque chose du genre (à condition que le nombre de villes et de chemins soient connus lors de la compilation) :

    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
    #include <stdio.h>
     
    #define NB_VILLES 5
    #define NB_CHEMINS 4
     
    typedef struct chemin
    {
        short ville_suiv;
        short distance;
    } CHEMIN;
     
    int main(void)
    {
        CHEMIN chemin[NB_VILLES][NB_CHEMINS]={
        {{1,170},{2,140},{3,315},{-1,0}},
        {{0,170},{4,345},{2,160},{-1,0}},
        {{0,140},{1,160},{4,175},{-1,0}},
        {{0,315},{4,235},{-1,0},{-1,0}},
        {{1,345},{2,175},{3,235},{-1,0}}
        };
     
        int x,y;
     
        for (y=0; y<NB_VILLES; y++)
        {
            for (x=0; x<NB_CHEMINS; x++)
            {
                printf("%hd %hd - ",chemin[y][x].ville_suiv,chemin[y][x].distance);
            }
            printf("\n");
        }
     
        getchar();
        return 0;
    }
    Il y avait notamment un problème dans la déclaration de ta structure. Tu avais déclaré comme nouveau type (typedef) un tableau de structure à deux dimensions. Or, plus loin, tu déclarais un tableau à deux dimensions, de type CHEMIN... qui lui-même était déjà un type correspondant à un tableau à deux dimensions. En clair, ton tableau, au lieu d'être à deux dimensions, était à 4 dimensions.

    Tu avais également oublié de rajouter les deux accolades pour englobler toute les données initialisées du tableau.

    Il faut éviter les commentaires en double slash, qui ne sont corrects qu'en C99 (même si Visual fait l'impasse dessus) et en C++. Or, pour des problèmes de portabilité, il est préférable de coder en C90, car peu de compilateurs implémentent toute la norme C99.

  3. #3
    Membre confirmé Avatar de mouchT8
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    Merci beaucoup pour cette réponse !

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

Discussions similaires

  1. sizeof() d'une structure
    Par tut dans le forum MFC
    Réponses: 12
    Dernier message: 29/08/2006, 18h21
  2. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33
  3. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  4. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 15h47
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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