Année: 2018-2019
Travaux pratiques 3
Objectifs
- Comprendre les fonctions, les pointeurs et les structures.
Exercice 3.1 ★
En réutilisant le code de l’operators2.c (TP2), écrivez un programme en créant deux fichiers operator.h et operator.c. Dans operator.h, déclarez les fonctions suivantes : somme, différence, produit, quotient, modulo, 'et', ou et négation qui utilisent deux variables num1 (entier), num2 (entier). Implémentez ces fonctions dans operator.c. Pour l'opérateur négation, utilisez seulement un numéro. Considérez une variable op qui contient un de ces différents opérateurs. (+, -, *, /, %, &, |, ~). Utilisez switch et réutilisez le code de votre TP2, mais cette fois, si op est égal à ‘+’, le programme doit appeler la fonction 'somme' etc. Testez votre programme avec différentes valeurs de num1, num2, op.
Exercice 3.2 ★
Écrivez un programme en créant deux fichiers fichier.c et fichier.h. Dans fichier.h, déclarez les fonctions lire_fichier(char *nom_de_fichier) et ecrire_dans_fichier(char *nom_de_fichier, char *message). La fonction lire_fichier prend le nom du fichier et affiche son contenu à l'écran. ecrire_dans_fichier prend le nom de fichier et écrire le message saisi par l'utilisateur dans le fichier.
Exercice 3.3 ★★
En réutilisant le code de l’operator.c (voir ci-dessus), créer une commande calcule (fichier: calcule.c) qui utilise l'interface en ligne de commande. Il y a trois options pour cette commande: opérateur (+, -, *, /, %, &, |, ~), numéro un et numéro deux. Par exemple, si l'utilisateur écrit
$ calcule ‘*’ 23 40
Vous devez afficher le produit de ces deux numéros. Testez votre code.
Exercice 3.4 ★★
En réutilisant le code de l’etudiant2.c (TP2) et fichier.c, écrivez un fichier etudiant_db.c qui sauvegarde les noms, prénoms, adresses, et les notes dans un fichier etudiant.txt pour 5 étudiant(e)s (une ligne pour chaque étudiant(e)). Testez votre code. Cette fois, vous demanderez à l'utilisateur en utilisant scanf pour les détails de chaque étudiant. Par exemple, etudiant.txt
Dupont, Pierre, Boulevard du 11 novembre 1918, Villeurbanne, 20, 30
...
Exercice 3.5 ★★★
En réutilisant le code de couleurs.c, écrivez un programme couleur_compteur.c avec une fonction compte_couleur. N'oubliez pas de changer votre structure de couleurs (RGBA) pour gérer le compte. Par exemple, si l'utilisateur saisit les couleurs suivantes:
0xff 0x23 0x23 0x45
0xff 0x00 0x23 0x12
0xff 0x23 0x23 0x45
FIN
Vous devez afficher
0xff 0x23 0x23 0x45 2
0xff 0x00 0x23 0x12 1.
Remarquez bien que l'utilisateur peut saisir les couleurs sans fin jusqu'au mot 'FIN' pour dire que c'est la fin de sa liste de couleurs.
Exercice 3.6 ★★★
En réutilisant le code de chercher.c (TP2) et fichier.c, écrivez un fichier chercherfichier.c qui cherche une phrase dans un fichier, les deux sont à saisir par l'utilisateur. chercherfichier.c doit afficher toutes les lignes de fichier où les mots sont présents et également le nombre de fois qu'ils sont présents. Par exemple,
$ ./chercherfichier int fichier.c
Vous devez afficher
Ligne 10, 2 fois
Ligne 30, 1 fois
Astuce
- Pour l'exercice 3.5 et 3.6, vous pouvez utiliser getline() ou fgets().
Fichiers
operator.h, operator.c, fichier.c, fichier.h, etudiant_db.c, couleur_compteur.c, calcule.c, chercherfichier.c
Instructions
- Ne pas oublier les commentaires (nom de fichier, objectif, auteurs, , les lignes importantes de code etc.). Les commentaires sont notés.
- N’oublier pas de mettre à jour le fichier README et ajouter les détails concernant votre deuxième exercice.
- Compte rendu en format .zip en un seul fichier.