[C] N진수, 10진수 변환 함수

숭글·2022년 4월 24일
0

10진수를 n진수로 변환.

int	count(char *base)
{
	int	count;

	count = 0;
	while (base[count])
		count++;
	return (count);
}

받은 base의 길이가 몇인지 카운트한다.
base의 길이와 변환할 10진수 값, base를 전달하여 변환하였다.

void	rec_base(int n, char *base, int base_size)
{
	if (n < base_size)
	{
		ft_putchar(base[n]);
	}
	else
	{
		rec_base(n / base_size, base, base_size);
		ft_putchar(base[n % base_size]);
	}
}

여러 방식이 있겠지만 나누기를 여러 번 진행하면서 가장 큰 자리 수 부터 출력해야하기때문에 재귀 함수 사용이 가장 간단했다.

n진수를 10진수로 변환

int	convert_dec(int result, int num, char *base)
{
	int	base_num;

	base_num = count_base(base);
	return (result * base_num + num);
}

한 번에 변환할 수도 있겠지만 내 경우엔 수를 하나씩 받아 십진수로 변환해야했다.. 받을 char의 길이가 정해져있지않아서 배열을 선언할 수도 없었기때문에 위와 같은 함수를 작성했다.


Mathematics makes me think twice even for simple problem. 😬

profile
Hi!😁 I'm Soongle. Welcome to my Velog!!!

0개의 댓글