1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <stdio.h>
#include <stdlib.h>
#define LES_ZERO(nb) \
X( , 0, nb) \
X(un, 1, nb) \
X(deux, 2, nb) \
X(trois, 3, nb) \
X(quatre, 4, nb) \
X(cinq, 5, nb) \
X(six, 6, nb) \
X(sept, 7, nb) \
X(huit, 8, nb) \
X(neuf, 9, nb)
#define LES_DIX(nb) \
X11(dix, 10, nb) \
X11(onze, 11, nb) \
X11(douze, 12, nb) \
X11(treize, 13, nb) \
X11(quatorze, 14, nb) \
X11(quinze, 15, nb) \
X11(seize, 16, nb) \
X11(dix sept, 17, nb) \
X11(dix huit, 18, nb) \
X11(dix neuf, 19, nb)
#define LES_DIXAINES \
X10(vingt, 20, LES_ZERO) \
X10(trente, 30, LES_ZERO) \
X10(quarante, 40, LES_ZERO) \
X10(cinquante, 50, LES_ZERO) \
X10(soixante, 60, LES_ZERO) \
X10(soixante, 70, LES_DIX) \
X10(quatre vingt, 80, LES_ZERO) \
X10(quatre vingt, 90, LES_DIX)
char const * const tab[] = {
#define X(nb_lettre, nb_chiffres, nb) #nb_lettre,
#define X11(nb_lettre, nb_chiffres, nb) #nb_lettre,
LES_ZERO(0)
LES_DIX(0)
#undef X
#undef X11
#define X(nb_lettre, nb_chiffres, nb) #nb " " #nb_lettre,
#define X11(nb_lettre, nb_chiffres, nb) #nb " " #nb_lettre,
#define X10(nb_lettre, nb_chiffres, _) \
_(nb_lettre)
LES_DIXAINES
};
int main(void) {
int i;
for (i = 0; i < 100; i++)
printf("%s\n", tab[i]);
return EXIT_SUCCESS;
} |
Partager