예제 #1
0
파일: m4ths.c 프로젝트: 4rkiel/c
float puissance(float x, float n) {
  float k;
  if (x == 0){
    k=0;
  } else if (n > 0){
    k=x*(puissance(x, n-1));
  } else if (n < 0){
    k=(1/x)*(puissance(x, n+1));
  } else /* n==0 */ {
    k=1;
  }
  return k;
}
예제 #2
0
int puissance(int x,int n){
  int res=0;
  
  
  
  if(n==0){
    res = 1;
  }else if ((n%2!=0)){
    res = x*puissance(x,n-1);
  }else {
    res = puissance(x*x,n/2);
  }
  return res;
}
예제 #3
0
파일: ft_itoabase.c 프로젝트: Quevlahr/gnl
char			*ft_itoabase(int n, int base, int maj)
{
	int			psc;
	int			res;
	int			i;
	char		*str;

	psc = 0;
	i = 0;
	res = (n < 0) ? -1 : 1;
	n = ft_abs(n);
	while (n >= puissance(base, psc))
		psc++;
	psc--;
	str = ft_strnew(psc + 1);
	if (n == 0 || base == 0)
		str[0] = '0';
	res == -1 ? str[i++] = '-' : 0;
	while (psc >= 0)
	{
		str[i] = how_n(&n, base, psc, maj);
		psc--;
		i++;
	}
	return (str);
}
예제 #4
0
int puissance(int x,int n){
  int res=0;
  
  
  
  if(n==0){
    res = 1;
  }else if (n>0){
    res = x*puissance(x,n-1);
  }else if (n<0){
    //attention +1 pas -1 !!!!!!!!!!!!!!!!!!!!!!!!!!
    res = (1/x)*puissance(x,n+1);
    //res = 1/puissance(x,-n);
  }
  return res;
}
예제 #5
0
파일: route.c 프로젝트: seaguest/Sensor
uint8_t Is_voisin(volatile Status *s, uint8_t dst)
{		
	uint32_t  tmp;
	tmp = puissance(dst-1);
	if((s->Voisin&tmp)==tmp){
		return 1;
	}else{
		return 0;
	}
}
예제 #6
0
t_cpx	puissance(t_cpx a, int n)
{
	t_cpx	id;

	id.re = 1;
	id.im = 0;
	if (n == 0)
		return (id);
	return (mult(a, puissance(a, n - 1)));
}
예제 #7
0
static int puissance (int n)
{
   if (n == 0) 
   {
      return 1;
   }
   else
   {
      return (2 * puissance(n-1));
   }
}
예제 #8
0
파일: prog.c 프로젝트: nd4pa/tp
int main(){
	double x=0;
	int n=0;
	printf("Entrez \"x\"\n");
	scanf("%lf",&x);
	printf("Entrez \"n\"\n");
	scanf("%d",&n);	
 	x = puissance (x,n);
 	printf("%lf,\n",x);
 	return 0;
}
예제 #9
0
int main()
{
	int i; 
	unsigned char p;
	for (i=2;i<=12;i+=2) {
		printf("%d\t",i);
		for (p=2;p<=5;p++) 
			printf ("%d\t",puissance(i,p));
		printf("\n");
	}
	return 0;
}
예제 #10
0
파일: Arbre.c 프로젝트: hurlebouc/Entropie
char* afficheArbre(Arbre* arbre){
    char* res = malloc(33*puissance(2, arbre->profondeur) - 22);
    if(arbre->droit == NULL && arbre->gauche == NULL){
        sprintf(res, "[%d, %lu]", arbre->lettre, arbre->poids);
    } else {
        char* gauche = afficheArbre(arbre->gauche);
        char* droite = afficheArbre(arbre->droit);
        sprintf(res, "%lu, gauche(%s), droit(%s)", arbre->poids, gauche, droite);
        free(gauche);
        free(droite);
    }
    return res;
}
예제 #11
0
파일: m4ths.c 프로젝트: 4rkiel/c
void init(tab cmd){
  if (!strcmp(cmd, "addition")) {
    int a,b;
    printf("Enter two integers :\n");
    scanf("%d %d", &a, &b);
    printf("%d + %d = %d \n", a, b, addition(a, b));

  } else if (!strcmp(cmd, "pgcd")) {
    int a,b;
    printf("Enter two integers :\n");
    scanf("%d %d", &a, &b);
    printf("pgcd (%d, %d) = %d \n", a, b, pgcd(a, b));

  } else if (!strcmp(cmd, "somme")) {
    int a;
    printf("Enter one integer :\n");
    scanf("%d", &a);
    printf("Somme des %d premiers entiers = %d \n", a, somme(a));

  } else if (!strcmp(cmd, "factorielle")) {
    int a;
    printf("Enter one integers :\n");
    scanf("%d", &a);
    printf("(%d)! = %d \n", a, factorielle(a));

  } else if (!strcmp(cmd, "puissance")) {
    float a,b;
    printf("Enter two floats :\n");
    scanf("%f %f", &a, &b);
    printf("(%g ^ %g) = %g \n", a, b, puissance(a, b));

  } else if (!strcmp(cmd, "isocele")) {
    int a;
    printf("Enter one integer :\n");
    scanf("%d", &a);
    isocele(a);

  } else if (!strcmp(cmd, "cercle")) {
    int a;
    printf("Enter one integer :\n");
    scanf("%d", &a);
    cercle(a);



  } else {
    printf("Command not found \n");
    printf("Running listAll ... ? \n");
  }
  return ;
}
예제 #12
0
 // valeur du polynôme po pour un x donné
 double valeurPolynome (Polynome* po, double x) {
     Liste* li = po;
     double resu = 0;
     if (listeVide (li) ) {
         printf ("Polynôme nul\n"); exit (1);
     } else {
         ouvrirListe (li);
         while (!finListe (li)) {
             Monome* ptc = (Monome*) objetCourant (li);
             resu += ptc->coefficient*puissance(x, ptc->exposant);
         }
     }
     return resu;
 }
예제 #13
0
 // puissance nième d'un nombre réel x (n entier >=0)
 // voir en 1.2.5 page 10
 static double puissance (double x, int n) {
     double resu;
     if (n==0) {
     resu = 1.0;
     } else {
     resu = puissance (x, n/2);
     if (n%2 == 0) {
     resu = resu*resu; // n pair
     } else {
     resu = resu*resu*x; // n impair
     }
     }
     return resu;
 }
예제 #14
0
파일: ft_itoabase.c 프로젝트: Quevlahr/gnl
static char		how_n(int *n, int base, int psc, int maj)
{
	char		c_res;
	int			i_res;
	int			tmp;

	i_res = 1;
	tmp = puissance(base, psc);
	while (*n >= (i_res * tmp))
		i_res++;
	i_res--;
	*n -= i_res * tmp;
	if (maj == 1)
		c_res = (i_res > 9 ? i_res + '7' : i_res + '0');
	else
		c_res = (i_res > 9 ? i_res + 'W' : i_res + '0');
	return (c_res);
}
예제 #15
0
파일: route.c 프로젝트: seaguest/Sensor
void Add_router(volatile Status *s , uint8_t id, uint32_t voisin)
{	
	uint8_t i;
	uint32_t tmp;

	if(!Is_voisin(s,id)){					//only listen to voisin 
		Add_voisin(s,id);
		s->Route_table[id-1].Dst = id;	 
		s->Route_table[id-1].Next_hop = id;	 
		s->Route_table[id-1].Metric = 1;
	}
	for(i=0;i<30;i++){					 
		tmp = puissance(i);
		if((voisin&tmp)==tmp &&  !Is_voisin(s,i+1)){	//if it is not my voisin ; add it
			s->Route_table[i].Dst = i+1;	 
			s->Route_table[i].Next_hop = id;	 
			s->Route_table[i].Metric = 2;
		}
	}
}
예제 #16
0
int	get_from_base(int nb, int base)
{
  char	*get;
  int	i;
  int	x;
  int	res;

  i = 0;
  res = 0;
  if ((get = malloc(sizeof(char) * (my_int_len(nb) + 1))) == NULL)
    return (0);
  get = get_int(nb);
  res = 0;
  x = strlen(get) - 1;
  while (get[i])
    {
      res = res + ((get[i] - 48) * puissance(base, x));
      i++;
      x--;
    }
  return (res);
}
예제 #17
0
void main(){
  int res;
  res = puissance(2,3);
  printf("puissance de 2³=%d \n",res);
}
예제 #18
0
int machine_execute (Machine *m) {
  assert (m != NULL);

  m->IP = 0 ;
  
  int op = m->segment_code[m->IP] ;
  int v1, v2 ;
  char c ;
  int stop = 0 ;

  while (!stop) {
    switch (op) {
    case add :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 + v2 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case and :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 & v2 ;
      m->SP -- ;
      m->IP ++ ;      
      break ;

    case call :
      m->segment_data[m->SP] = m->IP + 2 ;
      m->IP = m->segment_code[m->IP+1] ;
      m->SP ++ ;
      break ;

    case calls :
      break ;

    case cont :
      v1 = m->segment_data[m->segment_data[m->SP-1]] ;
      m->segment_data[m->SP-1] = v1 ;
      m->IP ++ ;
      break ;

    case cpy :
      v1 = m->segment_code[m->IP+1];
      v2 = m->segment_data[m->SP-1] ;

      for(c = 0 ; c < v1 ; c++)
	m->segment_data[m->SP-1+c] = m->segment_data[v2+c];

      m->SP += (v1-1);
      m->IP += 2 ;
      break ;
      
    case dec :
      v1 = m->segment_code [m->IP+1] ;
      m->SP -= v1;
      if (m->SP < 0)
	error_fatal ("pointeur de pile incorrect") ;

      m->IP += 2 ;
      break ;

    case divi :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 / v2 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case eq :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      if (v1 == v2)
	m->segment_data[m->SP-2] = 1 ;
      else 
	m->segment_data[m->SP-2] = 0 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case gt :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      if (v1 < v2)
	m->segment_data[m->SP-2] = 1 ;
      else 
	m->segment_data[m->SP-2] = 0 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case halt :
      stop = 1 ;
      break ;

    case in :
      scanf ("%d", &v1);
      m->segment_data[m->segment_data[m->SP-1]] = v1 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case inc :
      v1 = m->segment_code [m->IP+1] ;
      m->SP += v1;
      if (m->SP >= SEGMENT_DATA_SIZE)
	error_fatal ("pointeur de pile incorrect") ;

      m->IP += 2 ;
      break ;

    case jp :
      m->IP = m->segment_code[m->IP+1];
      break ;

    case jf :
      if (m->segment_data[m->SP-1] == 0)
	m->IP = m->segment_code[m->IP+1];
      else 
	m->IP += 2 ;

      m->SP -- ;
      break ;

    case jl :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      if (v1 > v2)
	m->IP = m->segment_code[m->IP+1];
      else 
	m->IP += 2 ;

      m->SP -= 2 ;
      break ;

    case jg :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      if (v1 < v2)
	m->IP = m->segment_code[m->IP+1];
      else 
	m->IP += 2 ;

      m->SP -= 2 ;
      break ;

    case les :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      if (v1 > v2)
	m->segment_data[m->SP-2] = 1 ;
      else 
	m->segment_data[m->SP-2] = 0 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case libp :
      v1 = m->segment_code[m->IP+1] ;
      //v2 = m->segment_data[m->BP + v1] ; pour la donnée et
      v2 = m->BP + v1 ; // pour l'adresse

      m->segment_data[m->SP] = v2 ;
      m->SP ++ ;
      m->IP += 2 ;
      break ;

    case move :
      v1 = m->segment_code[m->IP+1] ;
      v2 = m->segment_data[m->SP - v1 - 1] ;

      for (c = 0 ; c < v1 ; c++)
	m->segment_data[v2+c] = m->segment_data[m->SP - v1 + c] ;

      m->SP -= (v1 + 1) ;
      m->IP += 2 ;
      break ;

    case mult :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 * v2 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case neg :
      v1 = m->segment_data[m->SP-1] ;
      m->segment_data[m->SP-1] = -v1 ;
      m->IP ++ ;
      break ;

    case not :
      v1 = m->segment_data[m->SP-1] ;
      if (v1 == 0)
	m->segment_data[m->SP-1] = 1 ;
      else 
	m->segment_data[m->SP-1] = 0 ;
      m->IP ++ ;
      break ;

    case or :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 | v2 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case out :
      fprintf (stdout, "%d\n", m->segment_data[m->SP-1]) ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case outc :
      m->IP++ ;
      while ((c = m->segment_code[m->IP++]) != 0)
	fprintf (stdout, "%c", c);
      break ;

    case pow :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = puissance (v2,v1);
      m->SP -- ;
      m->IP ++ ;
      break ;

    case push :
      m->segment_data[m->SP] = m->segment_code[m->IP+1] ;
      m->SP ++ ;
      m->IP += 2 ;
      break ;

    case pushr:
      break ;

    case ret :
      m->IP = m->segment_data[m->SP-1] ;
      m->SP -- ;
      break ;

    case rstrbp :
      m->BP =m->segment_data[m->SP-1] ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    case savebp :
      m->segment_data[m->SP] = m->BP ;
      m->BP = m->SP + 1 ;
      m->SP ++ ;
      m->IP ++ ;
      break ;

    case sub :
      v1 = m->segment_data[m->SP-1] ;
      v2 = m->segment_data[m->SP-2] ;
      m->segment_data[m->SP-2] = v1 - v2 ;
      m->SP -- ;
      m->IP ++ ;
      break ;

    default :
      error_fatal ("instruction inconnu") ;
    }

    op = m->segment_code[m->IP] ;
  }
  return 0 ;
}
예제 #19
0
int main() 
{
   printf("%d\n",puissance(10));
}
예제 #20
0
파일: route.c 프로젝트: seaguest/Sensor
void Add_voisin(volatile Status *s, uint8_t id)
{
	s->Voisin |= (uint32_t ) puissance(id-1);
}
예제 #21
0
파일: route.c 프로젝트: seaguest/Sensor
void Init_voisin(volatile Status *s)
{
	s->Voisin = 0;	
	s->Voisin |= (uint32_t ) puissance(s->MAC - 1);
}
예제 #22
0
int main () {
    output = fopen("output.txt","w");

    float s = p*p + (1-p)*(1-p);

    int i;
    for(i=0;i<100;i++) {
        tab[0][i] = i;
        tab[1][i] = 0;
        tab[2][i] = 0;
    }

    for(i=31;i<100;i++) {
        tab[1][i]++;
        tab[1][i-28]++;
        tab[1][i-31]++;
        if(x[i]^x[i-28]^x[i-31]==0) {
            tab[2][i]++;
            tab[2][i-28]++;
            tab[2][i-31]++;
        }
    }

    for(i=62;i<100;i++) {
        tab[1][i]++;
        tab[1][i-56]++;
        tab[1][i-62]++;
        if(x[i]^x[i-56]^x[i-62]==0) {
            tab[2][i]++;
            tab[2][i-56]++;
            tab[2][i-62]++;
        }
    }

    if(output!=NULL) {
        fprintf(output,"k   ");
        for(i=0;i<100;i++)
            fprintf(output,"%6d",tab[0][i]);
        fprintf(output,"\n");
        fprintf(output,"m(k)");
        for(i=0;i<100;i++)
            fprintf(output,"%6d",tab[1][i]);
        fprintf(output,"\n");
        fprintf(output,"h(k)");
        for(i=0;i<100;i++)
            fprintf(output,"%6d",tab[2][i]);
        fprintf(output,"\n");
    }
    else {
        printf("Erreur d'ouverture du fichier.\n");
    }

    fprintf(output,"p(k)  ");
    float min = 1,max = 0;
    float p_star = 1;
    int position_min,position_max,L1 = 0;
    for(i=0;i<100;i++) {
        float num = p * puissance(s,tab[2][i]) * puissance(1-s,tab[1][i]-tab[2][i]);
        float denum = p * puissance(s,tab[2][i]) * puissance(1-s,tab[1][i]-tab[2][i]) + (1-p) * puissance(1-s,tab[2][i]) * puissance(s,tab[1][i]-tab[2][i]);
        if(num/denum<min) {min = num/denum;position_min = i;}
        if(num/denum>max) {max = num/denum;position_max = i;}
        if(num/denum>=0.94) {
            if(p_star>num/denum) p_star = num/denum;
            L1++;
        }
        fprintf(output,"%.2f  ",num/denum);
    }

    printf("min = %f pos min = %d\n",min,position_min);
    printf("max = %f pos max = %d\n",max,position_max);
    printf("\n%d valeurs > %f\n",L1,p_star);
    float q_star = 1-p_star;
    printf("Average weight ~ %f\n",q_star*L1);

    fclose(output);

    return 0;
}
예제 #23
0
파일: route.c 프로젝트: seaguest/Sensor
void Delete_voisin(volatile Status *s, uint8_t id)
{
	s->Voisin &= (uint32_t ) (puissance(id-1)^0xFFFFFFFF);
}