Une structure dans une autre
Résolu
lemutan_1525
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
lemutan_1525 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
lemutan_1525 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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
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:
- L'importateur de fichiers a détecté une incohérence dans la structure de fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Tu peux partir sur une liste chaînée. Ce qui donne dans ton cas :
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)
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)
Salut lemutan_1525 ,
- tu as mal orthographié
- 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'
- quand tu postes du code, clique sur le bouton à gauche du bouton pour l'insertion d'images (qui ressemble à :
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
Sur le fond de ta question...
Lorsque tu as défini une
Par exemple :
crée un type
Par exemple :
Comme ce type est disponible une fois définit, tu peux l'utiliser pour définir d'autres
C'est ainsi que tu peux définir une
Utiliser un
Dal
- 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'
enumou 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
structmais un alias sur cette
structavec
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
structqui contient une autre
struct.
Utiliser un
typedefpermet de créer un alias sur le type
structcréé.
Dal