TP n°6
DEUG MIAS+MASS première annéee
2001-2002 Université de Clermont-Ferrand II
Exercice 1 :
Ecrire un programme qui affiche par valeurs croissantes
tous les nombres entiers entre 1000 et 9999 tels que la somme des deux
premiers chiffres soit égale à la somme des deux derniers
chiffres du nombre.
Exemple :
1001, 1010, 1102, ..., 5793, ..., 9999.
Remarque : ce problème sera aisement résolu en
utilisant les opérateurs DIV et MOD avec 10 comme diviseur.
Exercice 2 :
Un tableau, prévu pour 100 nombres entiers
maximum, sera rempli de N entiers pris au hasard entre 2 et 15
(N < 100, donné par l'utilisateur).
Ecrire un programme pascal qui permet :
- de demander la valeur
de N à l'utilisateur avec contrôle,
- de remplir le tableau
de N nombres aléatoires entre 2 et 15,
- de réaliser :
soit une permutation circulaire des éléments remplissant le tableau,
soit une inversion de la partie remplie de ce tableau,
- d'afficher le tableau obtenu.
Indications
Sur la permutation circulaire :
- à l'exception du dernier élément du tableau, chaque
élément doit occuper la case d'indice immédiatement supérieure.
- le dernier élément doit devenir le premier.
Sur l'inversion : par exemple, le tableau (2, 4, 7, 3, 9, 1) devient (1, 9, 3, 7, 4, 2).
Exercice 3 :
Ecrire un programme qui :
- remplit un tableau de 50 caractères de
façon aléatoire,
- demande à l'utilisateur un caractère et un indice,
- affiche alors selon le cas :
"Ce caractère est bien dans la case indiquée"
ou "Ce caractère n'est pas dans cette case, mais il apparait dans
...
autres cases du tableau"
ou "Ce caractère ne figure pas dans le tableau".
Remarque : le code ASCII de 'a' est 97, celui de 'z' est 122
et pour obtenir le caractère codé par un entier n : CHR(n).
Exercice 4 : Codage d'une lettre
La fonction SUCC(C) où C est de type char retourne
le caractère qui suit C dans la liste des caractères rangés
selon l'ordre ASCII. La fonction PRED(C) retourne le caractère
qui précède C.
1°) Ecrire un programme donnant la transformée
d'une lettre majuscule par n permutations circulaires successives. La lettre
et la valeur de n est au choix de l'utilisateur et chaque permutation circulaire
est faite sur l'ensemble de l'alphabet majuscule :
A-->B, B-->C, ..., Z-->A
Exemple : pour n=2, A devient C ; pour n=8, A devient I et X
devient F, pour n=30, A devient D, ...
2°) Ecrire un programme effectuant la transformation inverse.
Exercice 5 : Codage d'un mot (pour aller un peu plus loin)
On se propose de coder ou de décoder un message
secret constitué d'un mot formé de lettres majuscules. Le
code consiste à faire agir sur chaque lettre autant de permutations
circulaires qu'il y a de lettres dans le mot.
Ainsi, BONJOUR devient IVUQVBY (7 permutations).
1°) Ecrire un programme qui propose à l'utilisateur
de laisser invariant, de coder ou de décoder le mot de son choix.
2°) Modifier ensuite ce programme pour que l'utilisateur
puisse effectuer à nouveau un traitement proposé avec le
même mot ou recommencer avec de nouvelles données.
Exercice 6 : Pour aller plus loin, codage d'un message
Un message est constitué de plusieurs mots
eux-mêmes formés de lettres et séparés par des
espaces. Le codage traite chaque mot séparément selon sa
longueur et laisse invariant les espaces séparateurs.
Ainsi : IL FERA BEAU DEMAIN devient KN JIVE FIEY JKSGOT
Modifier le programme de l'exercice précédent afin qu'il
puisse traiter un message de plusieurs mots.
N.B. : contrairement à Turbo Pascal, gpc autorise les chaînes
de plus de 255 caractères. Choisir cependant une taille maximale
raisonnable pour le message.