/*decomp.c LG le 7 oct 2004*/

#include <stdio.h>

#define MAX 12
#define bool int
#define VRAI 1
#define FAUX 0

/*imprime nb en base 2, les points faibles à gauche*/
void base10tobase2(int nb)
{
  int res; int quo;
  quo = nb;
  while (quo >=2)
    {
      res = quo % 2;
      printf("%d ",res);
	  quo = (quo - res)/2;
    };
  printf("%d",quo);
  printf("\n");
}

/*construit le tableau bin de n en base 2*/
void base2(int n,int bin[MAX])
{
  bool continuer = VRAI;
  int quo = n;
  int reste = 0;
  int i=0;
  while(continuer)
    {
      reste = quo %2;
      bin[i]=reste;
      quo = (quo-reste)/2;
      i=i+1;
      if (quo <= 1 ) {continuer = FAUX; bin[i]=quo;}
    }
}

void imprimetableau(int tab[MAX])
{
  int i;
  for (i=0;i<MAX;i++)
    {
      printf("%d ",tab[i]);
    }
  printf("\n");
}

int main(void)
{
  int i; int tab[MAX];
  for (i=0;i<=10;i++)
    {
      base10tobase2(i);
    };

  /*ca imprime ca :
[gonnord@ubaye:96] decomp
0
1
0 1
1 1
0 0 1
1 0 1
0 1 1
1 1 1
0 0 0 1
1 0 0 1
0 1 0 1 */

  /*initialisation*/
  for (i=0;i<=MAX-1;i++)
    {
      tab[i] = -1;
    };

  base2(9,tab);

  /*impression*/
  imprimetableau(tab);

  /* ca imprime ca :
     1 0 0 1 -1 -1 -1 -1 -1 -1 -1 -1*/

  return 0;
}
