Exemple #1
0
t_div   *init_my_mod(char *n1, char *n2)
{
    t_div *d;

    d = malloc(sizeof(t_div));
    if (d == NULL)
        return (NULL);
    d->length = my_strlen(n2) + 1;
    d->dvd = malloc(my_strlen(n1) + 1);
    d->dvs = malloc(my_strlen(n2) + 1);
    d->temp_fact = malloc(my_strlen(n1) + 1);
    d->temp_cmp = malloc(my_strlen(n1) + 1);
    d->total = malloc(my_strlen(n2) + 1);
    d->mod = malloc(my_strlen(n1) + 1);
    if ((d->dvd == NULL) || (d->dvs == NULL))
        return (NULL);
    if ((d->temp_fact == NULL) || (d->temp_cmp == NULL))
        return (NULL);
    if (d->total == NULL)
        return (NULL);
    d->temp_cmp[my_strlen(n2) + 1] = '\0';
    d->is_neg = 0;
    my_strcpy(d->dvd, check_neg(d, n1, 1, 1));
    my_strcpy(d->dvs, check_neg(d, n2, 1, 1));
    my_strcpy(d->mod, "0");
    my_strcpy(d->temp_cmp, d->dvs);
    my_strcpy(d->temp_fact, "1");
    my_strcpy(d->total, "0");
    return (d);
}
Exemple #2
0
char		*ft_itoa(int n)
{
	int		i;
	int		neg;
	char	*str;

	i = 0;
	if (n == -2147483648)
		return (ft_strdup("-2147483648"));
	check_neg(&n, &neg);
	if ((str = ft_alloc(ft_intlen(n), neg)) == NULL)
		return (NULL);
	while (n > 9)
	{
		str[i] = ((n % 10) + '0');
		ft_fuck_norminette(&n, &i);
	}
	str[i] = n + '0';
	i++;
	if (neg == 1)
	{
		str[i] = '-';
		i++;
	}
	str[i] = '\0';
	ft_swap(str);
	return (str);
}
Exemple #3
0
char	*my_modulo(char *n1, char *n2)
{
    t_div *d;

    d = init_my_mod(n1, n2);
    if ((d != NULL) && (my_str_isnum(d->dvd) == 1) && (my_str_isnum(d->dvs) == 1))
        if (d->dvs[0] != '0')
        {
            while (d->dvd[0] != '-')
            {
                if ((my_do_op_sub_cmp(d->dvs, d->dvd, 0, 0) == 0) &&
                        (d->mod[0] == '0'))
                    my_strcpy(d->mod, d->dvd);
                my_strcpy(d->temp_cmp, d->dvs);
                my_strcpy(d->temp_fact, "1");
                while (my_do_op_sub_cmp(d->temp_cmp, d->dvd, 0, 0) == 1)
                    add_zero(d);
                (check_digits(d) == 1) ? (add_zero(d)) : (1);
                remove_zero(d);
                if (check_digits(d) == 1)
                    d->temp_fact = add_sub(d->temp_fact, "-1");
                get_minus(d->temp_cmp);
                d->total = add_sub(d->total, d->temp_fact);
                d->dvd = add_sub(d->dvd, d->temp_cmp);
            }
            free(d);
            return (check_neg(d, d->mod, 2, 0));
        }
        else
            my_putstr(DIV_0);
    return (0);
}
int     my_getnbr_base(char *str, char *base)
{
  int   nbr;
  int   len;
  int   j;
  int   k;
  int   i;

  len = init(base, &nbr, &j, &i);
  i = check_neg(str);
  if (check_base(base, 0) == -1)
    {
      return (0);
    }
  while (str[j])
    {
      k = 0;
      while (k < len && base[k] != str[j])
        k = k + 1;
      if (base[k] == str[j])
        nbr = nbr * len + k;
      else
        if ((str[j] != '-' && str[j] != '+'))
          return (0);
      j = j + 1;
    }
  return (nbr * i);
}
static void
run_test (void)
{
    check_eq_operator ();
    check_reduce ();
    check_equality_operator ();
    check_rounding();
    check_double();
    check_neg();
    check_add_subtract();
    check_add_subtract_overflow ();
    check_mult_div ();
}
Exemple #6
0
int main() {
    int array[] = {1, -2, 3, 10, -4, 7, 2, -5};
    //int array[] = {-8, -1, -3, -10, -4, -7, -2, -5};
    //int array[] = {-8, -1, -3, 10, -4, -7, -2, -5};
    int len = 8;
    res r;
    if(!check_neg(array, len)) {
        r = find_greatest_sum_with_memory(array, len);
    } else {
        r = find_largest(array, len);
    }
    printf("start: %d\n", r.start);
    printf("end: %d\n", r.end);
    printf("sum: %d\n", r.sum);
    int i = 0;
    printf("The sequence : ");
    for(i = r.start; i <= r.end; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");
    return 0;
}
int	my_getnbr(char *str)
{
  int	i;
  int	nb;
  int	neg;

  nb = 0;
  neg = check_neg(str, &i);
  while (str[i] && str[i] >= 48 && str[i] <= 57)
    {
      if (nb >= 214748364)
	{
	  if ((str[i] - 48) < 8)
	    nb = nb * 10 + (str[i] - 48);
	  else
	    return (0);
	}
      else
	nb = nb * 10 + (str[i] - 48);
      i++;
    }
  return (nb * neg);
}
Exemple #8
0
int
main (int argc, char *argv[])
{
  mpfr_prec_t p;
  unsigned k;

  tests_start_mpfr ();

  check_nans ();

  special ();
  for (p=2; p<100; p++)
    for (k=0; k<100; k++)
      check_two_sum (p);

  check(1196426492, "1.4218093058435347e-3", MPFR_RNDN,
        "1.1964264919985781e9");
  check(1092583421, "-1.0880649218158844e9", MPFR_RNDN,
        "2.1806483428158845901e9");
  check(948002822, "1.22191250737771397120e+20", MPFR_RNDN,
        "-1.2219125073682338611e20");
  check(832100416, "4.68311314939691330000e-215", MPFR_RNDD,
        "8.3210041599999988079e8");
  check(1976245324, "1.25296395864546893357e+232", MPFR_RNDZ,
        "-1.2529639586454686577e232");
  check(2128997392, "-1.08496826129284207724e+187", MPFR_RNDU,
        "1.0849682612928422704e187");
  check(293607738, "-1.9967571564050541e-5", MPFR_RNDU,
        "2.9360773800002003e8");
  check(354270183, "2.9469161763489528e3", MPFR_RNDN,
        "3.5426723608382362e8");

  check_neg ();

  tests_end_mpfr ();
  return 0;
}