Snippet
#include <stdio.h>
void convertToBase(int, int);
void convertToBaseRec(int, int);
void main()
{
int base,number;
// the number to be converted
printf("Enter The Number : ");
scanf("%d",&number);
// accept only valid based that is from 2 to 16
while(base>16 || base<2)
{
scanf("%d",&base);
}
//iterative
printf("\n Output Of Iterative Conversion : ");
convertToBase(base,number);
//recursion
printf("\n Output Of Recursive Conversion : ");
convertToBaseRec(base,number);
}
//convert and print the answer
void convertToBase(int base, int number)
{
//this array contains all digits that are used in different bases til 16 [hex]
char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
char output[100];
int i=0;
//actual logic
while(number>0)
{
//copy character from array digit situated at index = reminder of number / base
output[i++] = digits[number%base];
number = number/base;
}
i--;
//print output
for(;i>=0;i--)
{
}
}
void convertToBaseRec(int base, int number)
{
//this array contains all digits that are used in different bases til 16 [hex]
char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//actual logic
if(number<=0)
{
return;
}
//Call Recursively
convertToBaseRec(base,number/base);
//print character from array digit situated at index = reminder of number / base
printf("%c",digits [number%base ]);
}
Copy & Paste
|