Bonjour,

J'étudie en maths et je débute en C.

Pour un devoir, dont l'objectif est la gestion d une collection BD, organisée en série contenant plusieurs tomes,
j'ai défini 2 structures :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
typedef struct Tome_s {
  char *titre;
  char *scenariste;
  char *dessinateur;
  int no_serie;
  struct Serie_s *serie;
} Un_tome;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct Serie_s {
  char *titre;
  char *pays_parution;
  int nb_parus;
  Un_tome *tomes[MAX_TOMES];
} Une_serie;
Je dois créér une fonction permettant de créer une série selon le prototype suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Une_serie *creer_serie(char *nom_serie, char *pays_parution, int nb_parus)
et une permettant de créer une série selon le prototype suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Un_tome *creer_tome(char *titre, char *scenariste, char *dessinateur, int no_serie)
Voici ma proposition :

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
Une_serie *creer_serie(char *nom_serie, char *pays_parution, int nb_parus) {
 
    Une_serie *s = (Une_serie *)malloc(sizeof(Une_serie));
    s->titre=strdup(nom_serie);
    s->pays_parution=strdup(pays_parution);
    s->nb_parus=nb_parus;
	return s;
}
 
Un_tome *creer_tome(char *titre, char *scenariste, char *dessinateur, int no_serie) {
 
    Un_tome *t = (Un_tome *)malloc(sizeof(Un_tome));
    t->titre=strdup(titre);
    t->scenariste=strdup(scenariste);
    t->dessinateur=strdup(dessinateur);
    t->no_serie=no_serie;
	return t;
 
}

je teste avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int main() {
      Une_serie *test_serie = creer_serie("Asterix", "FR", 20);
      Un_tome *test_tome = creer_tome("Asterix le gaulois", "gosc","ud", 12);
}
Je pense que cela fonctionne bien.

J'ai plus de difficulté pour créer une fonction ajouter_serie_a_collection qui ajoute une nouvelle série à la fin du tableau. Elle doit déterminer cette fin. Les cases vides contiennent la valeur NULL.

Le prototype est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 void ajouter_serie_a_collection(Une_serie *collectionSeries[], Une_serie *serie)
Merci
N.