3.3 Conversions
Exercice 3.12 --- Saisie d'entier avec getchar.
Construire un programme dont la fonction principale permette de saisir
un entier stocké dans l'entrée standard (sous forme d'une
chaîne de caractères terminée par un retour chariot) et qui
le retourne.
Stocker votre chaîne de caractères en utilisant une commande
interne du shell. Puis, en utilisant une variable pré-définie du
shell, vérifiez que votre programme marche correctement (attention,
la variable $? est codée non signée sur un octet ).
Exercice 3.13 --- Affichage d'entier avec putchar.
Construire un programme dont la fonction principale permette d'afficher
un entier machine stocké dans une variable.
Remarque.
Vous utiliserez systématiquement ces codes chaque fois que vous
aurez à saisir ou à afficher des entiers.
Exercice 3.14 --- Conversion Francs -- Euro.
Un euro est équivalent à 6,55957 francs.
Construire un programme qui permet la conversion d'une somme de
francs en euros.
Remarque. Le taux de conversion n'est pas destiné a
être modifié. Ainsi, on peut le définir comme une constante.
En C, cette possibilité peut reposer sur le préprocesseur et
correspond à l'instruction #define nom
valeur. On ne précise pas de type car le préprocesseur
n'effectue que des transformations textuelles sur le fichier source.
Modifier votre programme afin de demander à l'utilisateur s'il
désire effectuer une autre conversion et le lui permettre le cas
échéant.
Exercice 3.15 --- Conversion de température.
La température se quantifie d'après différentes échelles :
-
L'échelle Celsius, qui a pour repères les
températures 0°C (glace fondante) et 100°C
(ébullition de l'eau) comporte, entre ces deux points, 100
degrés Celsius.
- L'échelle Fahrenheit en usage dans les pays
anglo-saxons utilise le mercure comme étalon. La glace fonds
à 32°F et l'eau bout à 212°F.
- L'échelle absolue comprend toujours des
températures positives, qui sont comptées en Kelvin à partir
du zéro absolu (0K=-273°C).
Établir les règles de conversion entre ces échelles (par
exemple, K=°C +273).
Construire un programme qui permet la conversion entre ces
différentes échelles. Après avoir permit la saisie de la
température, ce programme devra tout d'abord demander à
l'utilisateur de saisir l'échelle dans laquelle cette
température est exprimée puis s'enquérir de l'échelle dans
laquelle on veut faire la conversion.
Enfin, ce programme devra permettre grâce à une boucle de
recommencer cette opération autant de fois que l'utilisateur le
désirera.
Exercice 3.16 --- Détermination du jour correspondant à une date.
On désire obtenir, à partir d'une date, le jour de la semaine à
laquelle elle correspond. Pour cela on utilise la formule de Zeller :
æ
ç
ç
è |
|
+j+aa+ |
|
+ |
|
-2*ss |
ö
÷
÷
ø |
% 7
|
avec les notations :
-
a/b
- représente la division entière de a par
b ;
- a % b
- donne le reste de la division entière de a par
b ;
- j
- est le numéro du jour dans le mois ;
- mm
- est le numéro du mois dans l'année, diminué de 2
pour tous les mois sauf janvier et février, numérotés
respectivement 11 et 12, et qui sont considérés comme
appartenant à l'année précédente ;
- aa
- est le nombre composé des 2 derniers chiffres de
l'année ;
- ss
- est le nombre composé des chiffres de l'année sauf
les 2 derniers1.
On obtient ainsi un nombre de 0 à 6. Le nombre 0 correspond à
dimanche, le nombre 1 à lundi, etc. le nombre 6 à samedi.
La formule précédente n'est valable qu'après le 15 octobre 1582
du fait du changement de calendrier le jeudi 4 octobre 1582 : le
lendemain de ce jour a été le vendredi 15 octobre 1582.
Questions :
-
Transformer par une conditionnelle la formule pour la rendre
valable pour toute date (en tenant compte du changement de
calendrier). Donner le domaine de validité des données j,m,a
(date donnée) en respectant les contraintes du calendrier (y
compris les années bissextiles et conséquences du changement
de calendrier).
- Écrire un programme qui prend en entrée une date au format
jjmmssaa et qui affiche le jour correspondant.
Exercice 3.17 --- Convertion alphabet latin -- alphabet OTAN.
L'alphabet OTAN associe un mot à chaque lettre de l'alphabet latin.
On considère l'ensemble de mots :
| alpha |
bravo |
charlie |
delta |
echo |
foxtrot |
| golf |
hotel |
india |
juliet |
kilo |
lima |
| mike |
november |
oscar |
papa |
quebec |
romeo |
| sierra |
tango |
uniform |
victor |
whiskey |
xray |
| yankee |
zulu |
et à chaque mot, on fait correspondre sa première lettre. Cet
alphabet permet d'épeler des mots afin d'éviter les erreurs dues
à une mauvaise transmission.
Écrivez un programme qui prend en entrée un mot et qui affiche la
convertion de ce mot en alphabet OTAN ; les constituants de l'alphabet
OTAN devront être séparés par des espaces. Cette fonction
renvoie 1 en cas de succès et 0 si elle rencontre un caractère
ascii intraduisible.
Remarque.
Cet exercice nécessite la notion de tableau afin de stocker les
chaînes de caractères.
Pour tout commentaire : Alexandre Sedoglavic.