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

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

#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;
}



Здравствуйте! Конечно, я могу помочь вам создать простой калькулятор на 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++!


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








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








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