Une structure dans une autre

Résolu/Fermé
lemutan_1525 Messages postés 3 Date d'inscription mercredi 6 février 2019 Statut Membre Dernière intervention 7 février 2019 - 7 févr. 2019 à 09:03
lemutan_1525 Messages postés 3 Date d'inscription mercredi 6 février 2019 Statut Membre Dernière intervention 7 février 2019 - 7 févr. 2019 à 12:43
Bonjour,


mon probleme est sur le fait que j'ai cree une structure que voici

typdef struct ETUDIANT
{
char matricule [256];
char nom [256];
int age;
}ETUDIANT;


mais la je veut cree une autre structure sous le nom de liste_etudiant qui vas prendre en parametre les etudiants et le nombre d'etudiant de la liste ... et je connais pas comment m'y prendre votre aide serait la bien venu et merci d'avance
A voir également:

3 réponses

Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
7 févr. 2019 à 11:49
Tu peux partir sur une liste chaînée. Ce qui donne dans ton cas :

typedef LISTE_ETUDIANT
{
struct ETUDIANT etudiant;
struct ETUDIANT * etudiantSuivant;
int position;
} LISTE_ETUDIANT;


Un peu de lecture sur les listes chaînées :
https://www.commentcamarche.net/contents/114-langage-c-les-listes-chainees

Une structure LISTE_ETUDIANT contient un ETUDIANT et le pointeur vers l'ETUDIANT suivant. La variable position vaut la position de l'ETUDIANT dans la liste (le premier est 0 ou 1 comme tu le souhaite).

Si tu veux connaître la taille de ta liste, il faudra parcourir tous les éléments de ta liste jusqu'à tomber sur le dernier (pour info, le dernier élément de ta liste, n'a pas d'ETUDIANT suivant donc le pointeur est null) et regarder combien vaut la variable position (que tu dois définir ou mettre à jour à chaque fois que tu créé ou supprime un LISTE_ETUDIANT)

Il existe certainement une autre manière plus simple de calculer la taille de ta liste mais elle implique de ne pas mettre la variable position dans LISTE_ETUDIANT et de créer une autre fonction qui prend en entrée un LISTE_ETUDIANT et qui retourne en sortie la taille de la liste à partir de cet élément (l'avantage c'est que t'as pas besoin de mettre à jour constamment la variable position)
1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 7 févr. 2019 à 12:10
Salut lemutan_1525 ,

- tu as mal orthographié
typedef

- tu ne devrais pas utiliser des lettres capitales, qui sont, par convention, utilisées par les programmeurs C pour définir des constantes, sous forme d'
enum
ou de
#define
...
- quand tu postes du code, clique sur le bouton à gauche du bouton pour l'insertion d'images (qui ressemble à :
< > v

clique sur la flèche basse pour choisir le langage C et met ton code à l'intérieur des balises code). Cela préservera l'indentation de ton code, fera une coloration syntaxique du code posté et numérotera les lignes de code
- tu de déclares pas juste une
struct
mais un alias sur cette
struct
avec
typedef
...

Sur le fond de ta question...

Lorsque tu as défini une
struct
, tu as créé un type en C.

Par exemple :

struct point {
   int x;
   int y;
};

crée un type
struct point
, et comme tout type en C, tu peux l'utiliser pour déclarer des variables de ce type.

Par exemple :

struct point point_A;

Comme ce type est disponible une fois définit, tu peux l'utiliser pour définir d'autres
struct
, par exemple :

struct triangle {
   struct point point_A;
   struct point point_B;
   struct point point_C;
};

C'est ainsi que tu peux définir une
struct
qui contient une autre
struct
.

Utiliser un
typedef
permet de créer un alias sur le type
struct
créé.

Dal
1
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
7 févr. 2019 à 12:33
Merci pour les conventions de nommage en C. J'en fais pas beaucoup mais j'apprend un peu
0
lemutan_1525 Messages postés 3 Date d'inscription mercredi 6 février 2019 Statut Membre Dernière intervention 7 février 2019
7 févr. 2019 à 12:43
vraiment merci j tacherai de faire attention la prochaine foi...
0