Contrôle Machine n°2

Les seuls documents papier autorisés sont vos notes de cours, de travaux dirigés et de travaux pratiques. Les documents électroniques autorisés sont les documents présents sur les machines de l'IUT et dont vous êtes l'unique auteur (ainsi que les éventuels documents de cours). En dehors de la machine qui vous est attribuée et de votre matériel de composition (crayons, stylos, …), aucun matériel n'est autorisé.

Toutes les réponses devront prendre la forme de fichiers source en langage C (plus les scripts de compilation). Suivez scrupuleusement les instructions de ce sujet, vos réponses doivent correspondre aux exemples d'exécution : soyez rigoureux !

Sauf indication contraire, vous pouvez supposer que les données fournies sur la ligne de commande ou l'entrée standard respectent les restrictions de l'énoncé et ne nécessitent donc pas de contrôle.

Assurez-vous que votre copie de travail est à jour (git pull). Dans le répertoire dédié au module (normalement, ~/DEV/DEV1.1/), créez un nouveau répertoire nommé CM2. Faites-en votre répertoire courant et placez-y tous les fichiers générés durant l'épreuve.

Effacez tous les fichiers temporaires et ne gardez que les fichiers d'extension .c, .h et les éventuels Makefile (attention à ne pas effacer vos fichiers source !). Placez-vous ensuite dans le répertoire immédiatement au dessus de CM2 et archivez votre travail, par exemple par la commande :

bob@box:DEV1.1$ tar czvvf dummy_CM2.tar.gz CM2
Remplacez le mot dummy par votre login. Téléversez l'archive ainsi obtenue à cet endroit.

Attention Vous utiliserez obligatoirement les options -ansi -pedantic lors de la compilation.

  1. Date. (5 points) Écrivez un programme qui demande une date au format dd/mm/aa et qui détermine quel jour de la semaine correspond à cette date.

    bob@box:CM2$ ./a.out
    Entrez une date : 25/01/22
    C'est un mardi.
    

    Pour cela, vous devez utiliser la fonction mktime qui est décrite dans la page manuelle :

    bob@box:CM2$ man 3 mktime
    

  2. Densité. (5 points) Écrivez une fonction qui prend en argument un tableau de réels ainsi que sa taille, et qui renvoie le nombre de valeurs nulles qu'il contient.

    Écrivez dans un autre fichier un programme qui reçoit sur sa ligne de commande une liste de réels et qui affiche le résultat de la fonction précédente appelée sur cette liste.

    bob@box:CM2$ ./a.out -12.5 0.0 1.2e12 -0.0
    2 valeurs nulles
    

    Vous fournirez un fichier Makefile qui permet d'utiliser la commande make pour compiler tous les fichiers sources en un exécutable.

  3. Duplicata. (5 points) Écrivez un programme qui prend en argument les noms de deux fichiers et qui détermine s'ils ont un contenu identique.

    bob@box:CM2$ ./a.out toto.c titi.c
    Fichiers identiques !
    

  4. Double. (5 points) Dans cette question, on considère des listes chaînées dont les maillons contiennent chacun un entier long.

    Écrivez une fonction qui affiche une telle liste chaînée, et une fonction qui détruit une telle liste chaînée.

    Écrivez une fonction qui prend une telle liste chaînée et en renvoie une copie, contenant les mêmes valeurs dans le même ordre.

    Écrivez un programme qui teste ces fonctions, en affichant la copie après avoir détruit l'original.

retour à la page d'accueil

retour au sommet