Example #1
0
char		*ft_itoa(int n)
{
	char	*str;
	int		i;
	int		len;

	i = 0;
	len = num_length(n);
	if (!(str = ft_strnew(len)))
		return (NULL);
	else if (n == -2147483648)
		return (ft_strcpy(str, "-2147483648"));
	if (n < 0)
	{
		str[i] = '-';
		n *= -1;
		i++;
	}
	while (--len >= i)
	{
		str[len] = (n % 10) + '0';
		n /= 10;
	}
	return (str);
}
int main()
{
	int total_counter = 0;
	int n = 0;
	int digit;
	int current_num_length;

	int searched_position = 1;
	int searched_positions_counter = 6;

	int result = 1;

	bool is_running = true;
	while (is_running)
	{
		n++;
		current_num_length = num_length(n);

		if (searched_position <= (total_counter + current_num_length) && searched_position > total_counter)
		{
			total_counter += current_num_length;

			int k = 1, f = total_counter - searched_position;
			while (f)
			{
				k *= 10;
				f--;
			}

			digit = n / k % 10;
			result *= digit;

			std::cout << n << "\t" << total_counter << "\t" << searched_position << "\t" << digit << std::endl;

			if (searched_positions_counter > 0)
			{
				searched_position *= 10;
				searched_positions_counter--;
			}
			else
			{
				is_running = false;
			}
		}
		else
		{
			total_counter += current_num_length;
		}
	}

	std::cout << "\nresult: " << result << std::endl;

	return 0;
}
char *int_to_string(int number)
{
  int i;
  int rem;
  char *str;
  int length = 0;
  int copy = number;

  if (number == INT_MIN)
    {
      number = number + 1;
    }
  if (number < 0)
    {
      print_char('-');
      number = number * -1;
    }
  length = num_length(number);

  str = malloc(sizeof(char) * length);

  if (number == 0)
    {
      str[0] = '0';
    }else
    {
      for (i = 0; i < length; i++)
	{
	  rem = number%10;
	  number = number/10;
	  str[length - (i +1)] = rem + '0';
	}
      if (copy == INT_MIN)
	{
	  str[length - 1] += 1;
	}
    }
  return str;
}