diff --git a/Conversions/toDecimal.c b/Conversions/toDecimal.c new file mode 100644 index 00000000..c9a9f2f0 --- /dev/null +++ b/Conversions/toDecimal.c @@ -0,0 +1,38 @@ +/* + * convert from any base to decimal + */ + +#include +#include + +int main(void) { + int base, i, j; + char number[100]; + unsigned long decimal = 0; + + printf("Enter the base: "); + scanf("%d", &base); + printf("Enter the number: "); + scanf("%s", &number[0]); + + for (i = 0; number[i] != '\0'; i++) { + if (isdigit(number[i])) + number[i] -= '0'; + else if (isupper(number[i])) + number[i] -= 'A' - 10; + else if (islower(number[i])) + number[i] -= 'a' - 10; + else + number[i] = base + 1; + + if (number[i] > base) + printf("invalid number\n"); + } + + for (j = 0; j < i; j++) { + decimal *= base; + decimal += number[j]; + } + + printf("%lu\n", decimal); +}