diff options
author | RossTheRoss <mstrapp@protonmail.com> | 2020-01-30 16:55:04 -0600 |
---|---|---|
committer | RossTheRoss <mstrapp@protonmail.com> | 2020-01-30 16:55:04 -0600 |
commit | 175721a63b426355274fa9e8063f762020ab8362 (patch) | |
tree | cf2c1b33233d660c9f50de5e659b9343bb264984 /OLD/ee2301/baseConvert.cpp | |
parent | Make Python thing in Python (diff) | |
download | homework-175721a63b426355274fa9e8063f762020ab8362.tar homework-175721a63b426355274fa9e8063f762020ab8362.tar.gz homework-175721a63b426355274fa9e8063f762020ab8362.tar.bz2 homework-175721a63b426355274fa9e8063f762020ab8362.tar.lz homework-175721a63b426355274fa9e8063f762020ab8362.tar.xz homework-175721a63b426355274fa9e8063f762020ab8362.tar.zst homework-175721a63b426355274fa9e8063f762020ab8362.zip |
R E A R R A N G E
Diffstat (limited to 'OLD/ee2301/baseConvert.cpp')
-rw-r--r-- | OLD/ee2301/baseConvert.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/OLD/ee2301/baseConvert.cpp b/OLD/ee2301/baseConvert.cpp new file mode 100644 index 0000000..d675741 --- /dev/null +++ b/OLD/ee2301/baseConvert.cpp @@ -0,0 +1,57 @@ +// C program to convert a number from any base +// to decimal +#include <stdio.h> +#include <string.h> +#include <iostream> + +// To return value of a char. For example, 2 is +// returned for '2'. 10 is returned for 'A', 11 +// for 'B' +int val(char c) +{ + if (c >= '0' && c <= '9') + return (int)c - '0'; + else + return (int)c - 'A' + 10; +} + +// Function to convert a number from given base 'b' +// to decimal +int toDeci(char *str, int base) +{ + int len = strlen(str); + int power = 1; // Initialize power of base + int num = 0; // Initialize result + int i; + + // Decimal equivalent is str[len-1]*1 + + // str[len-1]*base + str[len-1]*(base^2) + ... + for (i = len - 1; i >= 0; i--) + { + // A digit in input number must be + // less than number's base + if (val(str[i]) >= base) + { + printf("Invalid Number"); + return -1; + } + + num += val(str[i]) * power; + power = power * base; + } + + return num; +} + +// Driver code +int main() +{ + char str[] = "11A"; + int base = 16; + printf("Please enter number followed by base: "); + std::cin >> str >> base; + printf("Decimal equivalent of %s in base %d is" + " %d\n", + str, base, toDeci(str, base)); + return 0; +} |