Contrôle Machine n°3

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é CM3. 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 CM3 et archivez votre travail, par exemple par la commande :

bob@box:DEV1.1$ tar czvvf dummy_CM3.tar.gz CM3
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. Coloration. (7 points) Le fichier image.pgm est une image dans un format très basique qui ne permet que les tons de gris. Ce format est entièrement composé de texte, ce qui rend sa manipulation très aisée. Pour visualiser l'image, emacs est recommandé (mais GIMP marche aussi).

    bob@box:CM3$ emacs image.pgm &
    

    Dans emacs, vous pouvez magnifier l'image avec + et basculer entre l'édition du fichier sous forme de texte et l'affichage du résultat avec Ctrl+C Ctrl+C.

    Cette image contient un message composé de pixels gris (d'intensité 3 sur 5) sur fond noir. On désire augmenter la lisibilité en mettant le message en blanc (intensité 5), sans pour autant affecter la bordure de l'image qui contient également des pixels d'intensité 3.

    Écrivez un programme qui fait cette modification dans le fichier image.pgm, en l'ouvrant une seule fois.

  2. Culmination. (7 points) Écrivez un programme qui prend en arguments sur la ligne de commande une série d'entiers naturels (au moins un) et qui affiche le plus grand d'entre eux.

    Impératif Votre programme ne devra utiliser aucune boucle.

    bob@box:CM3$ ./a.out 21 7 82 27 9 21 3
    82
    

  3. Calculs. (6 points) On souhaite faire des additions sur des entiers naturels arbitrairement grands. Pour cela, on imagine stocker les chiffres de la représentation décimale dans une liste chaînée (un chiffre par maillon, les unités en premier).

    Écrivez une fonction qui prend en argument un entier naturel sous la forme d'une chaîne de caractères contenant sa représentation décimale (sans limite de longueur) et qui renvoie le même entier sous la forme d'une liste chaînée comme décrit ci-dessus.

    Écrivez une fonction qui affiche une telle liste chaînée (un affichage à l'envers est acceptable mais pas idéal).

    Écrivez une fonction qui reçoit deux listes chaînées et produit une autre liste chaînée représentant la somme de ses arguments.

    Écrivez un programme qui prend en argument sur la ligne de commande deux entiers naturels sans limite de taille et qui affiche la somme de ces entiers.

    bob@box:CM3$ ./a.out 1111111111111111111111117 3333333333333333333333333
    4444444444444444444444450
    

retour à la page d'accueil

retour au sommet