Salut à tous,
Voila j'ai partiel bientôt je m’entraîne à refaire mes TD cependant j'ai pas la correction donc je vais poster ici mes réponses afin que vous puissiez me corriger et m'aider si possible (c'est pas très compliqué .. juste j'ai du mal )
Merci.
Je code en C.
Exercice 1 : Carnet d'adresses. On souhaite écrire un programme qui puisse gérer un carnet d'adresses.
1. Définir la structure fiche_t d'une personne qui contient :
- Un nom, un prénom (chaînes de caractères dont la longueur n'est pas définie)
- Une année de naissance, un code postal (entiers)
2. Ecrire la fonction ficher_creer qui prend en entrée un nom, un prénom, une année de naissance et un code postal et renvoie un pointeur sur une structure fiche_t.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 struct fiche_s{ char *nom; char *prenom; int annee; int cp; }; typedef struct fiche_s fiche_t;
Rappel :
- la fonction int strlen(const char* s) ; prend en entrée une chaînes de caractères et renvoie la longueur.
- la fonction void strcpy(char * dest,char * src); copie la chaîne de caractères pointée par src à l'adresse pointée par dest.
3. Ecrire la fonction fiche_detruire qui prend en entrée un pointeur sur une fiche_t et libère la mémoire allouée dans un fiche_creer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 fiche_t * fiche_creer(char *nom, char *prenom, int annee, int cp) { fiche_t *res = (fiche_t*)malloc(sizeof(fiche_t)); res -> nom = (char *) malloc((strlen(nom) + 1) * sizeof(char)); res -> prenom = (char *) malloc((strlen(prenom) + 1) * sizeof(char)); res -> annee = annee; res -> cp = cp; return res; }
4. Ecrire la fonction fiche_cmp qui prend entrée deux structures fiche_t et renvoie 1 si les noms, prenoms et années de naissance sont les mêmes; et 0 sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void fiche_detruire(fiche_t *fiche) { fiche_t *res =(fiche_t*) malloc(sizeof(fiche_t)); free(res); return; }
Rappel :
- La fonction int strcmp(char * s1, char* s2) renvoie 0 si les deux chaines de caractères s1 et s2 sont identiques.
5. Ecrire la fonction fiche_affiche qui prend en entrée une structure fiche_t et affiche son contenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int fiche_cmp (fiche_t s1, fiche_t s2) { if (strcmp(s1.nom, s2.nom) == 0) return 1; return 0; if (strcmp(s1.prenom, s2.prenom) == 0) return 1; return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void fiche_affiche (fiche_t f) { printf("Nom : %s\n", f.n); printf("Prenom : %s\n", f.p); printf("Année de naissance : %d\n", f.annee); printf("Code Postal : %d\n", f.cp); }
Partager