Другие языки программирования и технологии

Посмотрите код и посоветуйте может какие-то правки или другие варианты решения задания по ООП с++

Предметная область: «Рациональная дробь».
Данные класса: числитель и знаменатель дроби.
Функции класса: сложение, вычитание, умножение, деление, сравнение двух дробей на равенство, умножение и сложение с дробью целого числа.
https://pastebin.com/iMr1T1fh - вот код
Роман ********
Роман ********
478
ну так как это ООП, можно сразу делать не функции, а добавлять действия операторам
посмотри, что такое перегрузка операторов/операций и дружественные классы

то есть, вместо d1.Addition(d1, d2);
будет лучше использовать d1 += d2;
или еще лучше d1 += new d2();
и по остальным функциям так же
ПМ
Правда Матка - Ложь Яички
3 314
Лучший ответ
Роман ******** Как перегрузить оператор + допустим чтобы возвращалось значение не 0.75, а "3 / 4" допустим. Мне нужны числа в форме дробей чтоб выводились
Что сразу бросилось в глаза:

В конструкторе при знаменателе = 0 по идее должны выкидывать исключение.

Используйте const и ссылки при передачах параметров Drob в методы.

Зачем у методов сложения, вычитания и т. д. два аргумента, когда одна дробь - уже сам экземпляр, с которым по логике вещей должна происходить операция.

Не используйте вывод в cout внутри методов. Нужен вывод в поток - перегрузите оператор << для работы с ostream.

Числитель и знаменатель в private и нет способов их получить вне класса. Вы уверены, что так надо? Ведь это норм. получить числитель и знаменатель дроби.

Наверное стоило сделать перегрузку операторов. Она напрашивается.

Чуть по-"мелочам":
Имя Drob...
метод Subtraction - Substruction
метод Devision - Division или Divide.
setlocale(LC_ALL, ""); - поставит локаль по умолчанию. В англ. виндах будут проблемы, даже если установлены шрифты с поддержкой кириллицы.
conio...,system("cls"), _getch... ну не очень хорошо...
for (zn; - zn; не обязателен. можно просто for(; условие;....)
Хорошо бы код отдельно, .h заголовок отдельно, но тут понятно кода мало - лениво.
Просто перегрузи стандартные математические операторы да и всё.
Artur Ukbaev
Artur Ukbaev
10 115
Роман ******** Их разве можно перегрузить чтобы они возвращали значение в стиле "5 / 7" P.S. мне нужно чтобы выглядело как дробь
Пример:
r:=q+w;
t:=q*w;
if r<t then
p:='меньше';
end
else
p:='больше';
end;