Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с кодом на С++ Пожалуйста

a Ученик (88), на голосовании 5 месяцев назад
Необходимо Создать класс "Дробное число со знаком (Fractions)". Число должно быть представлено двумя полями: целая часть - длинное целое со знаком, дробная часть - беззнаковое короткое целое. Реализовать арифметические операции сложения, вычитания, умножения и операции сравнения. Один из объектов должен быть передан в метод другого объекта в качестве параметра. В функции main проверить эти методы.
Голосование за лучший ответ
Тим Фамилия Гуру (3900) 6 месяцев назад
Конечно, я помогу вам с кодом на C++. Вот пример класса Fraction, который соответствует вашим требованиям:

#include <iostream>

class Fraction {
private:
long wholePart; // целая часть
unsigned short fractionalPart; // дробная часть

public:
// Конструктор для инициализации
Fraction(long whole, unsigned short fractional) : wholePart(whole), fractionalPart(fractional) {}

// Методы для выполнения арифметических операций
Fraction add(const Fraction& other) const {
// Сложение дробей
long newWhole = this->wholePart + other.wholePart;
unsigned short newFractional = this->fractionalPart + other.fractionalPart;
if (newFractional >= 10000) {
newWhole++;
newFractional -= 10000;
}
return Fraction(newWhole, newFractional);
}

Fraction subtract(const Fraction& other) const {
// Вычитание дробей
long newWhole = this->wholePart - other.wholePart;
unsigned short newFractional = this->fractionalPart - other.fractionalPart;
if (this->fractionalPart < other.fractionalPart) {
newWhole--;
newFractional += 10000;
}
return Fraction(newWhole, newFractional);
}

Fraction multiply(const Fraction& other) const {
// Умножение дробей
long newWhole = this->wholePart * other.wholePart;
unsigned short newFractional = this->fractionalPart * other.fractionalPart / 10000;
return Fraction(newWhole, newFractional);
}

// Методы сравнения
bool isEqual(const Fraction& other) const {
return (this->wholePart == other.wholePart) && (this->fractionalPart == other.fractionalPart);
}

// Метод для вывода дроби
void print() const {
std::cout << wholePart << "." << fractionalPart << std::endl;
}
};

int main() {
// Создание объектов класса Fraction
Fraction f1(3, 5000);
Fraction f2(2, 3000);

// Проверка методов
Fraction resultAdd = f1.add(f2);
Fraction resultSubtract = f1.subtract(f2);
Fraction resultMultiply = f1.multiply(f2);

std::cout << "Результат сложения: ";
resultAdd.print();

std::cout << "Результат вычитания: ";
resultSubtract.print();

std::cout << "Результат умножения: ";
resultMultiply.print();

std::cout << "Результат сравнения: " << std::boolalpha << f1.isEqual(f2) << std::endl;

return 0;
}
Dians Мастер (2017) 6 месяцев назад
Конечный код на C++ для класса "Дробное число со знаком (Fractions)" выглядит следующим образом (делал gpt https://habab.ru/pomoshchnik-v-napisanie-koda-na-c/ ):

#include <iostream>

class Fraction {
private:
long wholePart; // Целая часть
unsigned short fractionPart; // Дробная часть

public:
// Конструктор класса
Fraction(long whole, unsigned short fraction) : wholePart(whole), fractionPart(fraction) {}

// Метод для сложения
Fraction add(const Fraction& other) const {
long newWhole = wholePart + other.wholePart;
unsigned short newFraction = fractionPart + other.fractionPart;
if (newFraction > 999) {
newFraction %= 1000;
newWhole++;
}
return Fraction(newWhole, newFraction);
}

// Метод для вычитания
Fraction subtract(const Fraction& other) const {
long newWhole = wholePart - other.wholePart;
unsigned short newFraction;
if (fractionPart < other.fractionPart) {
newWhole--;
newFraction = 1000 + fractionPart - other.fractionPart;
} else {
newFraction = fractionPart - other.fractionPart;
}
return Fraction(newWhole, newFraction);
}

// Метод для умножения
Fraction multiply(const Fraction& other) const {
long newWhole = (wholePart * other.wholePart) + (wholePart * other.fractionPart / 1000) + (other.wholePart * fractionPart / 1000);
unsigned short newFraction = fractionPart * other.fractionPart / 1000;
return Fraction(newWhole, newFraction);
}

// Метод для сравнения
bool isEqual(const Fraction& other) const {
return (wholePart == other.wholePart) && (fractionPart == other.fractionPart);
}

// Метод для вывода дробного числа
void print() const {
std::cout << wholePart << "." << fractionPart << std::endl;
}
};

int main() {
Fraction f1(3, 500), f2(2, 300);

Fraction resultAdd = f1.add(f2);
Fraction resultSubtract = f1.subtract(f2);
Fraction resultMultiply = f1.multiply(f2);

resultAdd.print();
resultSubtract.print();
resultMultiply.print();

bool equal = f1.isEqual(f2);
std::cout << equal << std::endl;

return 0;
}
KORF Шарафутдинов Ученик (105) 6 месяцев назад
Ликус надоел учись сам,неучь, Михаил Юрьевичу тебя сдадим
Похожие вопросы