
Простейший алгоритм, функция перевода числа из одной системы счисления в другую, через десятичную
c++

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

Ответ:
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int a, b;
string u;
cin >> a >> b >> u;
int de = 0;
for (int i = 0; i < u.length(); i++)
{
de += (u[i] - '0') * pow(a, u.length() - i - 1);
}
string su;
while (de > 0)
{
su.push_back((de % b) + '0');
de = de / b;
}
reverse(su.begin(), su.end());
cout << su;
return 0;
}
Объяснение:
a - исходная система счисления,
b - итоговая,
u - вводимое число в виде строки
de - результат в 10-чной системе счисления
su в b-ичной системе счисления



Перевод числа из одной системы счисления в другую через десятичную систему счисления можно выполнить следующим образом на языке C++ с использованием простого алгоритма. В этом примере предполагается, что исходное число представлено в виде строки, и вы хотите перевести его из системы счисления с основанием base_from в систему счисления с основанием base_to.
cpp#include <iostream>
#include <string>
// Функция для конвертации символа из одной системы счисления в десятичную
int charToDecimal(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'Z') {
return c - 'A' + 10;
} else if (c >= 'a' && c <= 'z') {
return c - 'a' + 10;
}
// Обработка ошибки: символ не принадлежит допустимому диапазону
return -1;
}
// Функция для конвертации числа из одной системы счисления в десятичную
int convertToDecimal(const std::string& number, int base_from) {
int decimal_value = 0;
int base_power = 1;
for (int i = number.length() - 1; i >= 0; i--) {
int digit = charToDecimal(number[i]);
if (digit == -1 || digit >= base_from) {
std::cerr << "Ошибка: Недопустимая цифра в числе." << std::endl;
return -1;
}
decimal_value += digit * base_power;
base_power *= base_from;
}
return decimal_value;
}
// Функция для конвертации числа из десятичной системы в другую систему счисления
std::string convertFromDecimal(int decimal_value, int base_to) {
std::string result = "";
while (decimal_value > 0) {
int remainder = decimal_value % base_to;
char digit_char;
if (remainder < 10) {
digit_char = '0' + remainder;
} else {
digit_char = 'A' + remainder - 10;
}
result = digit_char + result;
decimal_value /= base_to;
}
return result;
}
int main() {
std::string input_number;
int base_from, base_to;
// Введите число, изначальную систему счисления и желаемую систему счисления
std::cout << "Введите число: ";
std::cin >> input_number;
std::cout << "Введите изначальное основание системы счисления: ";
std::cin >> base_from;
std::cout << "Введите желаемое основание системы счисления: ";
std::cin >> base_to;
// Перевести число в десятичную систему
int decimal_value = convertToDecimal(input_number, base_from);
if (decimal_value != -1) {
// Перевести число из десятичной системы в желаемую
std::string result = convertFromDecimal(decimal_value, base_to);
std::cout << "Результат: " << result << std::endl;
}
return 0;
}
Этот код сначала принимает ввод числа, изначальной системы счисления и желаемой системы счисления, затем использует функции convertToDecimal
для перевода числа в десятичную систему и convertFromDecimal
для перевода числа из десятичной системы в желаемую.


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