Questions: deuxième session
- Année: 2018-2019
- Durée: 2 heures
- Total: 20 points
- Documents: autorisés
- Types de documents autorisés: Tous les documents autorisés
- Calculatrices : non autorisées
Question 1
Quels sont les avantages à utiliser un Makefile et la commande make.
Vous avez des fichiers C suivants : client.c
, client.h
, serveur.c
,
serveur.h
, couleur.c
et couleur.h
.
Ecrivez un Makefile qui peut générer deux fichiers exécutables appelés server
et client
en
utilisant les fichiers précédents. L’exécutable client
est généré en utilisant client.c
,
client.h
, couleur.h
et couleur.c
et l’exécutable server
est
généré en utilisant les fichiers serveur.c
, serveur.h
,
couleur.h
et couleur.c
. (2 points)
Question 2
Quelles sont les différences entre les mots-clés struct et union en C ? Coder en C une structure de données chanson qui comporte les éléments suivants : identifiant, titre, nom de chanteur(s)/chanteuse(s), durée de la chanson, année de la sortie, nom de compositeur/compositrice, prix. Instanciez une variable de cette structure (par exemple, les détails de votre chanson préférée). Pensez à utiliser les pointeurs. (2 points)
Question 3
La suite de Fibonacci est une suite d’entiers définie comme suit:
- U0=1
- U1=1
- Un= Un-1 + Un-2
Codez en C la fonction fibonacci(int n), qui affiche les n termes de la suite de Fibonacci U0, U1, U2,...Un. Vous devrez utiliser les boucles (par exemple, for, while, do..while) pour cette question. Par exemple fibonacci(6) affiche
1 1 2 3 5 8 (2 points)
Question 4
Codez en C une fonction qui prend des entiers (un ou plusieurs). L’objectif de cette fonction est de calculer et renvoyer les valeurs suivantes
- a) Le numéro plus grand
- b) Le numéro plus petit
- c) La moyenne
Pensez à utiliser les pointeurs pour renvoyer ces valeurs.(2 points)
Question 5
Coder en C la fonction int conversion (char * str) qui permet de convertir une chaine de caractères str à un nombre entier (int
).
La fonction conversion renvoie le nombre après la conversion. Vous pouvez utiliser les fonctions disponibles dans
les bibliothèques standards ou vous pouvez écrire votre propre fonction. (2 points)
Question 6
Codez en C la fonction qui affiche les mots uniques dans un fichier. Le nom du fichier est saisi par l’utilisateur. Par exemple, la sortie de votre programme peut ressembler à ceci:
- main
- int
- float
(2 points)
Question 7
En utilisant les listes simplement chainées, écrivez le code liste.c
(et liste.h
) et implémentez les fonctions suivantes :
- void inserer(list *, float) prend deux entrées : une liste de nombres flottant simplement chainée et un nouveau nombre flottant. L’objectif de cette fonction est d’ajouter ce nombre à la fin de la liste chainée.
- float supprimer (list *) prend une entrée : une liste de nombres flottant simplement chainée. L’objectif de cette fonction est de supprimer le premier nombre flottant dans la liste et de renvoyer ce nombre.
Question 8
Codez en C le programme qui cherche un fichier dans un répertoire et les sous-répertoires. Le nom de fichier ainsi que le chemin de répertoire sont saisis par l’utilisateur. Le programme affiche ‘oui’ ou ‘non’. (2 points)
Question 9
Codez en C un programme qui cherche une phrase passée par l’utilisateur dans un fichier. Le nom du fichier est également saisi par l’utilisateur. Votre programme doit afficher les numéros de lignes où la phrase apparait. Par exemple, si l’utilisateur cherche le mot float dans un fichier calcule.c
, l’affichage de votre programme peut ressembler à ceci :
- Ligne 4
- Ligne 12
- ...
(2 points)
Question 10
Codez en C un programme qui prend des numéros (un ou plusieurs) passés par la ligne de commande. L’objectif de code est de
- a) Trier les nombres par ordre croissant
- b) Trier les nombres par ordre décroissant
N’utilisez pas scanf
. (2 points)