/*************************************************************************************************************************************/
/* */
/* C O D A G E D E F I B O N A C C I : */
/* */
/* */
/* Author of '$xtc/FibonacciCoding.01$vv$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20151204150103). */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
#define NOMBRE_MAXIMAL_DE_NOMBRES_DE_FIBONACCI \
20
#define NOMBRE_DE_NOMBRES_ENTIERS \
256
int NombresDeFibonacci[NOMBRE_MAXIMAL_DE_NOMBRES_DE_FIBONACCI];
#define INITIALISATION_DE_LA_LISTE_DES_NOMBRES_DE_FIBONACCI \
{ \
int IndexInitialisation; \
\
for (IndexInitialisation=INDEX0 ; \
IndexInitialisation<=NombreVersIndex(NOMBRE_MAXIMAL_DE_NOMBRES_DE_FIBONACCI) ; \
IndexInitialisation++ \
) \
{ \
if (IndexInitialisation <= NombreVersIndex(2)) \
{ \
NombresDeFibonacci[IndexInitialisation] = IndexVersNombre(IndexInitialisation); \
} \
else \
{ \
NombresDeFibonacci[IndexInitialisation] \
= NombresDeFibonacci[IndexInitialisation-2]+NombresDeFibonacci[IndexInitialisation-1]; \
} \
} \
}
main()
{
int NombreCourant;
INITIALISATION_DE_LA_LISTE_DES_NOMBRES_DE_FIBONACCI;
for (NombreCourant=INDEX0 ; NombreCourant<=NombreVersIndex(NOMBRE_DE_NOMBRES_ENTIERS) ; NombreCourant++)
{
int IndexNombresDeFibonacci=INDEX0;
while (NombreCourant >= NombresDeFibonacci[IndexNombresDeFibonacci])
{
IndexNombresDeFibonacci++;
}
{
int IndexBinaire;
int CodesBinaires[IndexNombresDeFibonacci];
int Reste=NombreCourant;
printf("N=%03d --> ",NombreCourant);
CodesBinaires[IndexNombresDeFibonacci] = 1;
/* Marquage de fin du binaire du nombre courant a priori... */
for (IndexBinaire=(IndexNombresDeFibonacci-1) ; IndexBinaire>=INDEX0 ; IndexBinaire--)
{
if (Reste >= NombresDeFibonacci[IndexBinaire])
{
Reste = Reste-NombresDeFibonacci[IndexBinaire];
CodesBinaires[IndexBinaire] = 1;
/* Le nombre de Fibonacci courant participe a la valeur du nombre courant. */
}
else
{
CodesBinaires[IndexBinaire] = 0;
/* Le nombre de Fibonacci courant ne sert a rien... */
}
}
for (IndexBinaire=INDEX0 ; IndexBinaire<=IndexNombresDeFibonacci ; IndexBinaire++)
{
printf("%d",CodesBinaires[IndexBinaire]);
}
printf("\n");
}
}
}