Département d'Informatique
Groupe D2 de L1
Algorithmique & Programmation
Contrôle Continu
Mercredi 25 avril 2007
(durée : 1h30, tout document autorisé)



I   Décomposition d'un entier naturel en paires de 2 facteurs

Écrire un programme C qui étant donné un nombre entier naturel n non nul, détermine toutes les paires (a,b) de 2 nombres entiers telles que a × b = n. Le programme devra afficher une seule fois chaque paire (on considére que la paire (a,b) est la même que la paire (b,a)).

Exemple d'exécution:
Entrer un entier naturel non nul : 24

1 x 24 = 2 x 12 = 3 x 8 = 4 x 6 = 24

II   Dessine-moi un papillon

Écrire un programme C qui dessine un papillon, étant donnée sa taille. La taille doit être un nombre impair strictement supérieur à 1. Si l'utilisateur donne une taille incorrecte, le programme doit demander une nouvelle taille.

Exemple d'exécution:
Entrer la taille du papillon : 6
Entrer la taille du papillon : 8
Entrer la taille du papillon : 7

* *
** **
* * * *
* * *
* * * *
** **
* *

III   Grands entiers

On considère les entiers naturels ayant un grand nombre de chiffres décimales. On choisit de représenter ces entiers par un tableau à n éléments dont chaque élément représente un chiffre décimal : le chiffre des unités est placé à l'indice 0, le chiffre des dizaines, à l'indice 1, le chiffre des centaines, à l'indice 2, etc. On met des zéros dans le reste du tableau (lorsqu'il n'y a pas assez de chiffres). Pour chaque question, on supposera que n est plus grand que le nombre de chiffres des entiers que l'on représente.

1) Écrire une fonction C void lire_grand_entier(int N[], int n) qui lit un grand entier au clavier. L'utilisateur donnera les chiffres dans l'ordre en terminant par le chiffre des unités suivi par un caractère qui n'est pas un chiffre (par exemple le caractère '#') qui indiquera la fin de la suite de chiffres. 

2) On cherche à définir une fonction C int nb_chiffres_grand_entier(int N[], int n) qui retourne le nombre de chiffres d'un grand entier.
    a) Écrire une version itérative (en utilisant une boucle).
    b) Écrire une version récursive (en utilisant un appel récursif).

3)
Écrire une fonction C void ecrire_grand_entier(int N[], int n) qui affiche un grand entier.

4) Écrire un programme C qui lit au clavier un grand entier, écrit cet entier et affiche son nombre de chiffres. On utilisera les fonctions précédentes avec n=100.

Exemple d'exécution :

Entrer un grand entier (terminer par #) : 191715131197531#

Le nombre de chiffres de l'entier 191715131197531 est 15.