From 175721a63b426355274fa9e8063f762020ab8362 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Thu, 30 Jan 2020 16:55:04 -0600 Subject: R E A R R A N G E --- OLD/ee2301/baseConvert.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 OLD/ee2301/baseConvert.cpp (limited to 'OLD/ee2301/baseConvert.cpp') 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 +#include +#include + +// 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; +} -- cgit v1.2.3