Вопрос задан 29.07.2023 в 13:26. Предмет Информатика. Спрашивает Желтова Яна.

Здравствуйте! Нужна прога на С++ В общем нужен калькулятор с возможностью считать в различных

системах счисления.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Исаев Ерасыл.
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
#include <iostream>
#include <bitset>
#include <sstream>

const size_t hex(const std::string& number)
{
    size_t u_num = 0U;
    std::istringstream ost(number);
    ost >> std::hex >> u_num;
    return u_num;
}

template <typename L, typename R>
const size_t& calculate(const L& l, const R& r)
{
    return std::bitset<16>(l).to_ulong() + std::bitset<16>(r).to_ulong();
}

int main()
{
    std::cout << calculate(hex("7c"), 5) << std::endl;
    std::cout << calculate("11", hex("1d")) << std::endl;
}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Здравствуйте! Конечно, я могу помочь вам создать простой калькулятор на C++ с возможностью работы в различных системах счисления. Давайте начнем с небольшого примера калькулятора, который может выполнять базовые арифметические операции (+, -, *, /) в различных системах счисления: десятичной, двоичной, восьмеричной и шестнадцатеричной.

cpp
#include <iostream> #include <string> #include <cmath> // Функция для преобразования числа из указанной системы счисления в десятичную систему int toDecimal(const std::string& num, int base) { int decimal = 0; int power = 1; int len = num.length(); for (int i = len - 1; i >= 0; --i) { int digit; if (num[i] >= '0' && num[i] <= '9') { digit = num[i] - '0'; } else if (num[i] >= 'A' && num[i] <= 'F') { digit = num[i] - 'A' + 10; } else if (num[i] >= 'a' && num[i] <= 'f') { digit = num[i] - 'a' + 10; } else { // Введен некорректный символ return -1; } if (digit >= base) { // Введена некорректная цифра для указанной системы счисления return -1; } decimal += digit * power; power *= base; } return decimal; } // Функция для преобразования числа из десятичной системы в указанную систему счисления std::string fromDecimal(int num, int base) { std::string result; while (num > 0) { int digit = num % base; if (digit < 10) { result.insert(result.begin(), '0' + digit); } else { result.insert(result.begin(), 'A' + digit - 10); } num /= base; } return result; } int main() { std::cout << "Добро пожаловать в калькулятор с поддержкой различных систем счисления!" << std::endl; while (true) { int base; std::string num1, num2; char op; std::cout << "Введите первое число: "; std::cin >> num1; std::cout << "Введите операцию (+, -, *, /): "; std::cin >> op; std::cout << "Введите второе число: "; std::cin >> num2; std::cout << "Введите систему счисления (2, 8, 10, 16): "; std::cin >> base; int decNum1 = toDecimal(num1, base); int decNum2 = toDecimal(num2, base); if (decNum1 == -1 || decNum2 == -1) { std::cout << "Ошибка: введены некорректные числа или система счисления!" << std::endl; continue; } int result; switch (op) { case '+': result = decNum1 + decNum2; break; case '-': result = decNum1 - decNum2; break; case '*': result = decNum1 * decNum2; break; case '/': if (decNum2 == 0) { std::cout << "Ошибка: деление на ноль!" << std::endl; continue; } result = decNum1 / decNum2; break; default: std::cout << "Ошибка: неподдерживаемая операция!" << std::endl; continue; } std::string resultStr = fromDecimal(result, base); std::cout << "Результат: " << resultStr << std::endl; char choice; std::cout << "Хотите продолжить (y/n)? "; std::cin >> choice; if (choice != 'y' && choice != 'Y') { break; } } return 0; }

Этот калькулятор работает с четырьмя основными системами счисления: двоичной, восьмеричной, десятичной и шестнадцатеричной. При вводе чисел и операции, пользователь также указывает систему счисления, в которой представлены вводимые числа.

Когда программа получает числа и операцию, она преобразует числа из указанной системы счисления в десятичную систему, выполняет арифметическую операцию и затем преобразует результат обратно в указанную систему счисления для вывода ответа.

Надеюсь, это поможет! Если у вас возникнут какие-либо вопросы, не стесняйтесь спрашивать. Удачи вам с программированием на C++!

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос