#include <iostream>
#include <string>
#include <cmath>
int hexCharToInt(char hexChar) {
if (hexChar >= '0' && hexChar <= '9') {
return hexChar - '0';
} else if (hexChar >= 'A' && hexChar <= 'F') {
return hexChar - 'A' + 10;
} else if (hexChar >= 'a' && hexChar <= 'f') {
return hexChar - 'a' + 10;
} else {
return -1; // Invalid hex character
}
}
int hexToDecimal(const std::string& hex) {
int decimal = 0;
int power = 0;
for (int i = hex.size() - 1; i >= 0; --i) {
int digitValue = hexCharToInt(hex[i]);
if (digitValue == -1) {
return -1; // Invalid hex string
}
decimal += digitValue * pow(16, power);
++power;
}
return decimal;
}
int binaryToDecimal(const std::string& binary) {
int decimal = 0;
int power = 0;
for (int i = binary.size() - 1; i >= 0; --i) {
if (binary[i] == '1') {
decimal += pow(2, power);
} else if (binary[i] != '0') {
return -1; // Invalid binary string
}
++power;
}
return decimal;
}
int main() {
std::string hexInput, binaryInput;
// Input hexadecimal string
std::cout << "Enter a hexadecimal number: ";
std::cin >> hexInput;
// Convert hexadecimal to decimal
int decimalFromHex = hexToDecimal(hexInput);
if (decimalFromHex != -1) {
std::cout << "Decimal equivalent: " << decimalFromHex << std::endl;
} else {
std::cout << "Invalid hexadecimal input." << std::endl;
return 1;
}
// Input binary string
std::cout << "Enter a binary number: ";
std::cin >> binaryInput;
// Convert binary to decimal
int decimalFromBinary = binaryToDecimal(binaryInput);
if (decimalFromBinary != -1) {
std::cout << "Decimal equivalent: " << decimalFromBinary << std::endl;
} else {
std::cout << "Invalid binary input." << std::endl;
return 1;
}
return 0;
}