Конечный код на 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;
}