예제 #1
0
int	my_square_root(int nb)
{
  int	i;
  while (my_power_rec(i, 2) < nb)
    {
      i = i + 1;
    }
  if (my_power_rec(i, 2) == nb)
    return (i);
  else
    return (0);
}
예제 #2
0
파일: my_power_rec.c 프로젝트: desomb/42sh
int	my_power_rec(int nb, int power)
{
  if (power + 1 > 1)
    {
      return (nb * (my_power_rec(nb, power - 1)));
      if ((nb * (my_power_rec(nb, power - 1))) > 2147483647)
	return (0);
    }
  else if ( power < 0)
    return (0);
  else if ( power == 0)
    return (1);
  return (0);
}
예제 #3
0
파일: fct_utilities.c 프로젝트: Wobow/Tek1
int		get_param(t_prog *p, int n)
{
  int		out;
  int		i;
  int		sizes[3];
  int		pos;
  int		par[3];

  par[0] = TYPE_PARAM1;
  par[1] = TYPE_PARAM2;
  par[2] = TYPE_PARAM3;
  sizes[P_DIR] = DIR_SIZE;
  sizes[P_REG] = REG_SIZE;
  sizes[P_IND] = IND_SIZE;
  pos = 0;
  out = 0;
  i = -1;
  while (++i && i < n)
    pos += sizes[par[i]];
  i = -1;
  while (++i && i < sizes[par[n]])
    out += p->param[pos + i] * my_power_rec(2, (sizes[par[n]] - i) * 8);
  my_printf("-- %d --\n", out);
  return (out);
}
예제 #4
0
int	convert_basex(char *str, int base_from)
{
  int	nb;
  int	is_neg;
  int	i;
  int	j;

  j = 0;
  i = my_strlen(str) -1;
  is_neg = 0;
  nb = 0;
  while (i > -1)
    {
      if (str[i] == '-' && str[i + 1] >= '0' && str[i + 1] <= '9')
	is_neg = 1;
      if (str[i] >= '0' && str[i] <= '9')
	{
	  nb += ((str[i] - 48) * (my_power_rec(base_from, j)));
	}
      hexnum(str[i], &j, &nb, base_from);
      --i;
      ++j;
    }
  if (is_neg)
    nb *= -1;
  return (nb);
}
예제 #5
0
int	my_get_nbr(char *str)
{
  int	i;
  int	nb;
  int	pow;

  i = 0;
  nb = 0;
  if (str != NULL)
    {
      while ((str[i] > '9' || str[i] < '0') && str[i] != '\0')
	i = i + 1;
      while (str[i] <= '9' && str[i] >= '0' && str[i] != '\0')
	i = i + 1;
      pow = 0;
      i--;
      while (i >= 0 && str[i] <= '9' && str[i] >= '0' && str[i] != '\0')
	{
	  nb = nb + ((str[i] - 48) * my_power_rec(10, pow));
	  pow++;
	  i--;
	}
      if (i >= 0 && str[i] == '-')
	nb = nb * (-1);
    }
  return (nb);
}
예제 #6
0
int	main()
{
  int	i;

  i = my_power_rec(2, 2);
  my_put_nbr(i);
  return (0);
}
예제 #7
0
파일: my_getnbr.c 프로젝트: Wobow/Tek1
int	my_power_rec(int nb, int p)
{
  if (p > 1)
    nb = nb * my_power_rec(nb, p - 1);
  else
    nb = 1;
  return (nb);
}
예제 #8
0
int	my_power_rec(int nb, int power)
{
  if (power == 0)
    return (0);
  else if (power > 1)
    nb = nb * my_power_rec(nb, power - 1);
  return (nb);
}
예제 #9
0
int	my_power_rec(int nb, int pow)
{
  int	nbr;

  if (pow == 0)
    return (1);
  nbr = nb * my_power_rec(nb, pow - 1);
  return (nbr);
}
예제 #10
0
int		my_power_rec(int nb, int power)
{
  int		a = nb;

  if (nb == 0 || power == 0)
    return (1);
  while (power > 0)
    return (nb * my_power_rec(nb, power - 1));
}
예제 #11
0
int	my_power_rec(int nb, int pwr)
{
  if (pwr == 1 || nb == 1)
    return (nb);
  else if (pwr == 0)
    return (1);
  else
    return (nb * my_power_rec(nb, pwr - 1));
}
예제 #12
0
int	my_power_rec(int nb, int power)
{
  if (power == 0 || nb == 0)
    return (1);
  if (power < 0)
    return (0);
  else
    return (nb * my_power_rec(nb, power -1));
}
예제 #13
0
int	my_power_rec(int nb, int power)
{
  if (power == 1)
    return (nb);
  if (power == 0)
    return (0);
  if (power < 0)
    return (1);
  return (nb * my_power_rec(nb, (power - 1)));
}
예제 #14
0
int	my_power_rec(int nb, int power)
{
  if (power == 0)
    return (1);
  if (power == 1)
    return (nb);
  if (nb > 8 && power > 9)
    return (0);
  while (power > 1)
    return (nb * my_power_rec(nb, power - 1));
}
예제 #15
0
int	my_power_rec(int nb, int power)
{
  if (power > 1)
    {
      nb = nb * my_power_rec(nb, power -1);
    }
  if (power == 0)
    {
      return (0);
    }
  return (nb);
}
예제 #16
0
void	hexnum(char c, int *j, int *nb, int base_from)
{
  if (c == 'A')
    {
      *nb += ( 10 * (my_power_rec(base_from, *j)));
    }
  if (c == 'B')
    {
      *nb += ( 11 * (my_power_rec(base_from, *j)));
    }
  if (c == 'C')
    {
      *nb += ( 12 * (my_power_rec(base_from, *j)));
    }
  if (c == 'D')
    {
      *nb += ( 13 * (my_power_rec(base_from, *j)));
    }
  if (c == 'E')
    {
      *nb += ( 14 * (my_power_rec(base_from, *j)));
    }
  if (c == 'F')
    {
      *nb += ( 15 * (my_power_rec(base_from, *j)));
    }
  return;
}
예제 #17
0
int	my_power_rec(int nb, int pow)
{
  if (nb == 1 || pow == 0)
    return (1);
  else if (nb == 0)
    return (0);
  else
    {
      if (pow == 1)
	return (nb);
      return (nb * my_power_rec(nb, pow - 1));
    }
}
예제 #18
0
int			calc_nbr(char *str, int i, char *base, int len)
{
  int			i_base;
  int			result;
  int			exp;
  int			j;

  exp = 0;
  result = 0;
  j = i;
  while (str && str[j + 1] && check_base(str[j + 1], base) != -1)
    j++;
  while (str && str[j] && j >= i)
    {
      if (214783647 - result <= my_power_rec(len, exp))
	exit(3);
      i_base = check_base(str[j], base);
      result = result + (i_base * my_power_rec(len, exp));
      j--;
      exp++;
    }
  return (result);
}
예제 #19
0
int	my_power_rec(int nb, int power)
{
  if (power == 0)
    return (1);
  if (power == 1)
    return (nb);
  if (power < 0)
    return (0);
  while (power != 1)
    {
      power = power - 1;
      return (nb * my_power_rec(nb, power));
    }
}
예제 #20
0
int	my_power_rec(int nb, int power)
{
  int	var;

  if (power < 0 || power >= 100000)
    return 0;
  else if (power <= 1)
    return 1;
  else
  {
    var = my_power_rec(nb, power - 1);
    if (var == 0 || nb > MAX_INT / var)
      return 0;
    return nb * var;
  }
}
예제 #21
0
파일: fct_utilities.c 프로젝트: Wobow/Tek1
int		get_ind_value(t_info *t, t_prog *p, int param, int mod)
{
  int		i;
  int		pos;
  int		out;

  i = 0;
  out = 0;
  pos = get_index(PC, p->param[param], mod);
  while (i < IND_SIZE)
    {
      out += t->vm[pos + i] * my_power_rec(2, (IND_SIZE - i) * 8);
      i++;
    }
  return (out);
}
예제 #22
0
파일: fct_utilities.c 프로젝트: Wobow/Tek1
int		get_reg_value(t_prog *p, int param)
{
  int		i;
  int		out;
  int		tmp;

  i = 0;
  out = 0;
  while (i < REG_SIZE)
    {
      tmp = p->reg[p->param[param] * REG_SIZE + i];
      out += tmp * my_power_rec(2, (REG_SIZE - i) * 8);
      i++;
    }
  return (out);
}
예제 #23
0
int	my_power_rec(int nb, int power)
{
  if (power < 0)
	return (0);
      if (power == 0)
	return (1);
      if (nb == 1)
	return (1);
      if (nb == -1 && power % 2 == 0)
	return (1);
      if (nb == -1 && power % 2 == 1)
	return (-1);
      if (power > 1)
	return (nb * my_power_rec(nb, power - 1));
      else
	return (nb);
}
예제 #24
0
int	my_power_rec(int nb, int power)
{
  int	result;

  if (power > 0)
    {
      result = nb * my_power_rec(nb, (power - 1));
      return(result);
    }
  else
    {
      if (power == 0)
	{
	  return (1);
	}
      return (0);
    }
}
예제 #25
0
파일: vm_getparams.c 프로젝트: mabm/corewar
void	get_codage(unsigned char code, char **params, int nb_args)
{
  int	i;
  int	j;

  i = 0;
  while (i < nb_args)
    {
      j = 0;
      params[TYPE_P][i] = 0;
      while (j < 2)
	{
	  if ((code & 128) != 0)
	    params[TYPE_P][i] += my_power_rec(2, (1 - j));
	  code = code << 1;
	  j++;
	}
      i++;
    }
}
예제 #26
0
파일: fct_part1.c 프로젝트: Wobow/Tek1
int		my_live(t_info *t, t_prog *p)
{
  int		i;
  int		jo;

  t->nb_live++;
  jo = 0;
  i = 0;
  while (i < 4)
    {
      jo += p->param[i] * my_power_rec(2, (3 - i) * 8);
      i++;
    }
  if (jo > 0 && jo <= 4)
    {
      my_printf("le joueur %d(%s) est en vie\n", jo,
  		t->prog_list[jo - 1]);
      t->verif[jo - 1] = 1;
    }
  if (t->nb_live % NBR_LIVE == 0)
    t->delta += CYCLE_DELTA;
  return (0);
}