~cpp
#include <stdio.h>
static int input_10,input_num;
int get_maxjarisu(int num1,int num2);
int get_jegob(int num,int count);
void behavior(int num1,int num2);
int get_count(int num1,int num2,int num3);
/*/////////////////////////////////////////
get_maxjarisu 최대 자리수 얻기 함수
기능 : 숫자,진법 값을 받아 최대 자리숫자를 얻는다
최대자리숫자는 나중에 출력부분에서 for 문에 쓰이게 된다.
////////////////////////////////////////*/
int get_maxjarisu(int num1,int num2)// num1 = 숫자 num2 = 진법
{
int count=1;
int dividing;
while(1)
{
dividing = get_jegob(num2,count);
if (num1>=dividing){
count++;
}
else{
break;
}
}
return count;
}
/*////////////////////////////////////////
get_count 자리수의 값 얻기 함수
기능 : 각자리의 숫자의 값을 얻는다
return 값은 진법<--보다 항상 작다
응용 : 원하는 자리의 수의 값을 얻을수 있다.
////////////////////////////////////////*/
int get_count(int num1,int num2,int num3) //num1 = 숫자 ,num2 = 진법,num3 = 자리수
{
if (num3 ==1){
return num1 % num2;
}
else{
int temp;
temp = num1 % get_jegob(num2,num3-1);
num1 = num1 - temp; //나머지를 없앰으로서 소숫점을 남기지 않는다.
return (num1 % get_jegob(num2,num3))/get_jegob(num2,num3-1);
}
}
/*////////////////////////////////////////
get_jegob 제곱함수
기능 : 단순이 제곱을 해주는 함수이다.
////////////////////////////////////////*/
int get_jegob(int num,int count) //num =제곱할수 num2 =제곱할횟수
{
int i;
int sum=1;
for (i=0;i<count;i++)
{
sum=sum*num;
}
return sum;
}
/*////////////////////////////////////////
behavior 행동함수
기능 : for문으로 각자리숫자의 값을 output하는
기능을한다.
////////////////////////////////////////*/
void behavior(int num1,int num2) //num1 = 숫자 ,num2 = 나눌수
{
int i;
int temp=0;
for (i=get_maxjarisu(num1,num2);i>0;i--)
{
temp = get_count(num1,num2,i);
printf("%d ",temp);
}
printf("\n\n");
}
/*////////////////////////////////////////
main 말그대로 메인
////////////////////////////////////////*/
void main()
{
while(1)
{
printf("/////////////////////////\n");
printf("////////진법바꾸기///////\n");
printf("/////////////////////////\n");
printf("10진수 = ");
scanf("%d",&input_10);
if (input_10==0){
break;
}
else{
printf(" 진법 = ");
scanf("%d",&input_num);
if (input_num >=2 && input_num <=24){
printf(" 결과 = ");
behavior(input_10,input_num);
}
}
}
}