
Всем здравствуйте! Нужна помощь с С++. Надо реализовать класс Bigint ( варианты из интернета не
подходят) Надо реализовать такие функции как сравнение чисел, сложение, вычитание, умнажение, деление, взятие остатка, возведение в степень. Очень прошу о помощи, отдельное спасибо, если будут пояснение 

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

Ответ:
#include <iostream>
#include <cmath> // Для использования функции pow()
int main() {
int a = 10;
int b = 5;
// Сравнение чисел
if (a > b) {
std::cout << "a больше, чем b" << std::endl;
} else if (a < b) {
std::cout << "a меньше, чем b" << std::endl;
} else {
std::cout << "a равно b" << std::endl;
}
// Сложение
int sum = a + b;
std::cout << "Сумма a и b: " << sum << std::endl;
// Вычитание
int difference = a - b;
std::cout << "Разность a и b: " << difference << std::endl;
// Умножение
int product = a * b;
std::cout << "Произведение a и b: " << product << std::endl;
// Деление
double division = static_cast<double>(a) / b;
std::cout << "Результат деления a на b: " << division << std::endl;
// Взятие остатка
int remainder = a % b;
std::cout << "Остаток от деления a на b: " << remainder << std::endl;
// Возведение в степень
int power = pow(a, b); // Используем функцию pow() из библиотеки cmath
std::cout << "a в степени b: " << power << std::endl;
return 0;
}



Конечно, я могу помочь вам начать реализацию класса Bigint на C++. Этот класс будет представлять большие целые числа и включать в себя функции для сравнения, сложения, вычитания, умножения, деления, взятия остатка и возведения в степень. Ниже приведен пример начальной реализации класса Bigint. Обратите внимание, что это всего лишь начальный шаблон, и вам, возможно, придется внести дополнительные изменения и оптимизации:
cpp#include <iostream>
#include <vector>
#include <string>
class Bigint {
private:
std::vector<int> digits; // Цифры числа хранятся в обратном порядке (единицы в начале)
bool isNegative;
public:
// Конструктор по умолчанию создает Bigint со значением 0
Bigint() : isNegative(false) {
digits.push_back(0);
}
// Конструктор для инициализации из int
Bigint(int num) {
if (num < 0) {
isNegative = true;
num = -num;
} else {
isNegative = false;
}
if (num == 0) {
digits.push_back(0);
}
while (num > 0) {
digits.push_back(num % 10);
num /= 10;
}
}
// Конструктор для инициализации из строки
Bigint(const std::string& numStr) {
isNegative = false;
int startIdx = 0;
if (numStr[0] == '-') {
isNegative = true;
startIdx = 1;
}
for (int i = numStr.length() - 1; i >= startIdx; i--) {
digits.push_back(numStr[i] - '0');
}
if (digits.empty()) {
digits.push_back(0);
}
}
// Реализуйте операторы сравнения, сложения, вычитания, умножения, деления, остатка и возведения в степень здесь
// Оператор вывода для удобства отладки
friend std::ostream& operator<<(std::ostream& out, const Bigint& num) {
if (num.isNegative) {
out << '-';
}
for (int i = num.digits.size() - 1; i >= 0; i--) {
out << num.digits[i];
}
return out;
}
};
int main() {
Bigint a("123456789012345678901234567890");
Bigint b(-98765432109876543210987654321);
Bigint c = a + b;
std::cout << "a + b = " << c << std::endl;
Bigint d = a * b;
std::cout << "a * b = " << d << std::endl;
// Реализуйте остальные операции по аналогии
return 0;
}
Это начальная реализация класса Bigint. Вам нужно добавить операторы сравнения, вычитания, деления, остатка и возведения в степень, а также обработку случаев, когда числа разных знаков. Обратите внимание, что этот код предполагает, что числа не превышают размерность int. Если вы планируете работать с очень большими числами, вам потребуется более сложная логика для выполнения всех операций.


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