
Напишите функцию hexToDec, которая преобразует шестнадцатеричное число (заданное в виде строки) в
десятичное число int hexToDec(std::string hexString) { return 0; }

Ответы на вопрос

#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
int hexCharToDec(char hexChar)
{
switch (hexChar) {
case 'a':
return 10;
break;
case 'b':
return 11;
break;
case 'c':
return 12;
break;
case 'd':
return 13;
break;
case 'e':
return 14;
break;
case 'f':
return 15;
break;
default:
return hexChar - 48;
break;
}
}
int hexToDec(string hexString)
{
std::transform(hexString.begin(), hexString.end(), hexString.begin(), ::tolower);
int power = 0, ret = 0;
for (string::reverse_iterator rit = hexString.rbegin(); rit != hexString.rend(); ++rit) {
ret += hexCharToDec(*rit) * pow(16, power);
power++;
}
return ret;
}
int main()
{
string s;
cout << "Строка: ";
cin >> s;
cout << endl << "Ответ: " << hexToDec(s) << endl;
return 0;
}



Вот пример функции `hexToDec`, которая преобразует шестнадцатеричное число (заданное в виде строки) в десятичное число:
```cpp
#include
int hexToDec(std::string hexString) { int decimal = 0; int power = 0; // Проходимся по каждому символу в строке for (int i = hexString.length() - 1; i >= 0; i--) { char c = hexString[i]; // Если символ - цифра от '0' до '9' if (c >= '0' && c <= '9') { decimal += (c - '0') * pow(16, power); } // Если символ - буква от 'A' до 'F' else if (c >= 'A' && c <= 'F') { decimal += (c - 'A' + 10) * pow(16, power); } // Если символ - буква от 'a' до 'f' else if (c >= 'a' && c <= 'f') { decimal += (c - 'a' + 10) * pow(16, power); } power++; } return decimal; }
int main() { std::string hexNumber = "1A"; int decimalNumber = hexToDec(hexNumber); std::cout << "Hexadecimal: " << hexNumber << std::endl; std::cout << "Decimal: " << decimalNumber << std::endl; return 0; } ```
В этом примере функция `hexToDec` принимает шестнадцатеричное число в виде строки `hexString` и возвращает его десятичное представление в виде целого числа. Функция проходит по каждому символу в строке, начиная с конца, и преобразует его в соответствующее значение в десятичной системе счисления. Затем эти значения суммируются, учитывая позицию символа в числе и основание системы счисления (16). Функция использует функцию `pow` из библиотеки `
В основной функции `main` приведен пример использования функции `hexToDec`. Шестнадцатеричное число "1A" преобразуется в десятичное число и выводится на экран.
Примечание: В этом примере не предусмотрены проверки на некорректные символы в строке или на переполнение. Если вам нужно обрабатывать такие случаи, вам может потребоваться добавить соответствующую логику в функцию `hexToDec`.


Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili