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. Section. (5 points) Nous souhaitons étudier la fonction ldiv. Écrivez un programme qui prend en argument sur la ligne de commande deux valeurs entières (numérateur puis dénominateur) et qui affiche les deux résultats de l'appel à ldiv appliqué aux valeurs proposées. Aucune vérification sur les arguments n'est demandée.

    bob@box:CM2$ ./a.out 207 34
    quotient : 6
    reste : 3
    

  2. Séparation. (5 points) Le fichier carre.c contient le code source d'un programme complet. On souhaite placer la fonction lightness dans son propre fichier. Créez un fichier lightness.c et placez-y le code nécessaire. Créez ensuite le fichier lightness.h correspondant. Proposez un fichier Makefile qui permette la compilation séparée de ces deux sources et la génération de l'exécutable.

  3. Suite. (5 points) Écrivez une fonction qui prend un entier naturel en argument et qui renvoie un tableau dont la première case contient l'entier fourni, la seconde case contient la moitié de cet entier, et ainsi de suite jusqu'à ce que la dernière case contienne une valeur impaire. Cette fonction ne doit rien afficher.

    Écrivez un programme pour tester cette fonction. Il devra invoquer la fonction au moins trois fois avec une variété d'arguments, et les tableaux obtenus seront affichés à la console.

  4. Sensation. (5 points) Le fichier reitne contient un entier au format int big-endian. Cela signifie que l'ordre de ses octets est inversé par rapport à d'habitude.

    Écrivez un programme qui lit ce fichier et affiche la représentation décimale de l'entier qu'il contient.

    bob@box:CM2$ ./a.out
    1234567
    

retour à la page d'accueil

retour au sommet