title: Manipulation des nombres et de leur représentation number: 3 —
Rappel: A partir de maintenant, plus aucune valeur de test ne devra être codé en dur. Elles devront systématiquement être passées via la ligne de commande. Ex:
./mon_programe une_valeur une_autre_valeur etc
Dans un article publié en 1990 dans le Journal of Recrational Mathematics, Vol. 22, No. 4, 1990, p. 280, Mike Keith propose un algorithme pour la détermination du jour de la semaine correspondant à une date quelconque. Sa formule est inspirée de la congruence de Zeller. Wikibooks
Si \(m >= 3\), \(z = y\) et \(D = [23m/9] + d + 4 + y + [z/4] - [z/100] + [z/400] - 2 \equiv 7\)
Si \(m < 3\), \(z = y - 1\) et \(D = [23m/9] + d + 4 + y + [z/4] - [z/100] + [z/400] \equiv 7\)
Avec d
ay, m
onth, y
ear, [ / ]
une division entière et \(\equiv\) le
reste de la division (qui dans cette notation à une priorité plus faible que
l’addition).
Remarque: Mike Keith est américain (d’ou le choix des lettres … et plus).
cal
, vous avez toutes les clefs en mains pour la reproduire.Afficher la table des caractères sous la forme suivante :
Car. dec. hexa octal
'A' 65 0x41 0101
'B' 66 0x42 0102
...
'Z' 90 0x5a 0132
--min nombre
et --max nombre
pour limiter cette table à un intervalle.Un masque est un nombre dont seuls la position des 1 et des 0 qu’il contient dans sa représentation binaires comptent (i.e., sa valeur décimale importe peu)
sizeof
pour déterminer le nombre de bits si votre algorithme s’en sert).
- On propose les deux algorithmes suivants :
i
de \(n\) on ajoute un si ce bit est présent (décalage du masque).Le code couleur d’une résistance 3 anneau est donné par :
\[Resistance = (Couleur1 * 10 + Couleur2) * 10^{Couleur3}\]Chaque couleur est associée à une valeur,
Valeur | Couleur | Mnémotechnique |
---|---|---|
0 | Noir | Ne |
1 | Marron | Manger |
2 | Rouge | Rien |
3 | Orange | Ou |
4 | Jaune | Jeuner |
5 | Vert | Voila |
6 | Bleu | Bien |
7 | Violet | Votre |
8 | Gris | Grande |
9 | Blanc | Bêtise |
enum color
qui correspond à ce tableautimes_pow10
, qui retourne n
fois la \(10^p\) .index_of
qui retourne l’indice d’une chaine de
caractère dans un tableau de chaines.Cet exercice est un peu long, il ne sera jamais corrigé en TD. Bien entendu il est intéressant, et il vous est fortement conseillé de prendre un peu de temps chez vous pour le faire.
Pour saisir un nombre dans la variable entière
a
:scanf("%d", &a);
Écrivez un programme qui permet à deux utilisateurs de jouer au morpion à neuf
cases. Le principe du jeu est le suivant : les deux joueurs inscrivent tour
à tour un symbole dans l’une des cases libres de la grille (x
pour le joueur 1,
o
pour le joueur 2) ; le premier joueur qui réussit à aligner 3 symboles
identiques en ligne, colonne ou diagonale est vainqueur, et le match est nul si
toutes les cases sont remplies et si aucun joueur n’a gagné. Le programme
affichera la grille de la manière suivante :
1 2 3
1 . . .
2 . . .
3 . . .
Tour à tour, chaque joueur saisira le numéro de ligne suivi du numéro de
colonne où il souhaite jouer, puis la grille sera affichée à nouveau en
remplaçant le .
de la case choisie par le symbole du joueur (x
ou o
). Le
programme déclarera une victoire d’un joueur ou un match nul si applicable.