#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int TAILLE = 10;
int  BASE  =  2;

typedef    int   CHIFFRE;
typedef CHIFFRE * NOMBRE;

NOMBRE init( int v )
{ NOMBRE res;
  int  i = 0;
  res = ( NOMBRE ) calloc( TAILLE, sizeof( CHIFFRE ) );
  while ( v ) {
    res[ i ] = v % BASE;
    v = v / BASE;
    i = i + 1;
  }
  return res;
}
void print( NOMBRE z )
{ int err=0;
  int  i = TAILLE - 1;
  while ( 0 == z[ i ] && i >= 0 ) 
    i = i - 1; 
  while ( i >= 0 ) {
    if ( z[ i ] >= BASE ) err++;
    if ( z[ i ] < 0     ) err++;
    printf(".%d", z[i] );
    i--;
  }
  if ( err ) {
    printf("\npanic : %d erreurs", err );
    exit( 1 );
  }
}

int main( int argc, char *argv[] )
{ 
  int opt;
  char *optlist ="b:t:v:";
  int valeur;
  NOMBRE z;
  while ( ( opt = getopt( argc, argv , optlist) ) > 0  )
	  switch( opt ){
	  case 'b': BASE    = atoi( optarg ); break;
	  case 't': TAILLE  = atoi( optarg ); break;
	  case 'v': valeur  = atoi( optarg ); break;
	  default : printf("\nusage %s -> %s", argv[0], optlist); 
	            exit ( 1 );
	  }
  
  z = init( valeur );
  print( z );
  free( z );
  printf("\n");
  return 0;
}
