Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Blekzet
3 / 3 / 0
Регистрация: 21.12.2015
Сообщений: 195
1

Перегрузка оператора +=

10.12.2016, 03:41. Просмотров 248. Ответов 8
Метки нет (Все метки)

Собственно есть класс описывающий правильную дробь с целой частью, числителем и знаменателем, нужно для него перегрузить +=, но как это сделать я не знаю... У меня вышло только такая НЕХ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Fractions operator+= (Fractions &a, Fractions &b) {
        int comNum, comDen, comWhole, tmp;
        if (a.getDenominator() != b.getDenominator()) {
            comDen = a.getDenominator() * b.getDenominator();
            tmp = (a.getDenominator() * b.getNumerator()) + (b.getDenominator() * a.getNumerator());
            comWhole = tmp / comDen;
            comNum = tmp % comDen;
            a.arr[0] = comWhole;
            a.arr[1] = comNum;
            a.arr[2] = comDen;
        }
        else {
            a.arr[1] = (a.getNumerator() + (b.getNumerator()) % a.getDenominator());
            a.arr[2] = a.getDenominator();
            a.arr[0] = int((a.getNumerator() + b.getNumerator()) / a.getDenominator());
        }
    }
Честно говоря, это крайне странно выглядит
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2016, 03:41
Ответы с готовыми решениями:

Перегрузка оператора
#include <iostream> class Node { public: char *s; int length; Node * next; public:...

Перегрузка оператора +
Всем привет, проблема на этот раз такая. Для того, чтобы выучить классы, я пишу некое подобие...

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается Вот...

Перегрузка оператора[]
Пример взят из книги Лафоре, тема перегрузка операций. Выдает ошибки: 1.Требуется идентификатор....

Перегрузка оператора ++
Что делает оператор ++ при его перегрузке?

8
Mr.X
Эксперт С++
3195 / 1722 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 04:15 2
Цитата Сообщение от Blekzet Посмотреть сообщение
Честно говоря, это крайне странно выглядит
Да не то слово! А вы сами этот класс разрабатывали или вас принудили к этому?
На кой здесь вообще хранить целую часть? Достаточно числителя и знаменателя. Тогда и все операции упрощаются. А массив этот вообще ни к селу ни к городу!
0
Blekzet
3 / 3 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.12.2016, 04:36  [ТС] 3
Mr.X, массив нужен по заданию. Целую часть хранить ибо потом нужно вывести на экран.
0
Mr.X
Эксперт С++
3195 / 1722 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
10.12.2016, 05:48 4
Цитата Сообщение от Blekzet Посмотреть сообщение
массив нужен по заданию. Целую часть хранить ибо потом нужно вывести на экран.
Ну, чтобы ее выводить не обязательно ее хранить, ее всегда легко вычислить. А вот операции совершать с дробями она сильно мешает.
0
10.12.2016, 05:48
Blekzet
3 / 3 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.12.2016, 06:02  [ТС] 5
Mr.X, Да не суть как правильно с точки зрения простоты, а я просто не могу понять как написать правильный код. Приращивается 1 объект, за счет второго, а вот как такое правильно написать, я не знаю.
0
Ferrari F1
795 / 525 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
10.12.2016, 10:24 6
Blekzet, это задание из книги Лафоре?
0
Blekzet
3 / 3 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.12.2016, 18:14  [ТС] 7
Ferrari F1, это задание с сайта-учебника Романова Евгения Леонидовича
0
Ferrari F1
795 / 525 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
10.12.2016, 18:36 8
Blekzet, странно, почему этот человек возвращает объект, а не ссылку на класс Fractions
0
Blekzet
3 / 3 / 0
Регистрация: 21.12.2015
Сообщений: 195
11.12.2016, 00:15  [ТС] 9
Ferrari F1, не не не, это я написал эту НЕХ, но вот как ее правильно написать я не знаю, в этом вопрос

Добавлено через 1 час 17 минут
Может само задание что-то прояснит (про += взял мне объяснил IGPIGP):
Разработать и реализовать в виде методов операции над объектами класса: сложение, вычитание, умножение, сравнение, изменение отдельных частей и получение /изменение параметров объектов (арифметику класса). Результат выполнения – в текущем объекте.

Добавлено через 3 часа 35 минут
оператор += не принимает 2-х параметров. И компилятор это Вам пишет, - посмотрите внимательно. А вернуть он должен ссылку:
C++
1
2
3
4
5
6
MyType & operator += (const MyType & rhs)
{
elem+= rhs.elem;//предполагается что elem в public и имеет +=
//elem=elemm+rhs.elem;//если нет += но хотя бы + должен бы быть если оператор по смыслу не кривой
return *this;//вернули ссылку на себя
}
Вот ответ кому будет нужно.
0
11.12.2016, 00:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2016, 00:15

Перегрузка оператора
Помогите доделать задание... Это в классе метод, осуществляющий ввод значений полей класса с...

Перегрузка оператора +=
У меня имеется структура и метод, который вызывается след образом: A.plus_and_minus(B); Есть...

Перегрузка оператора '='
Не давно стал изучать С++ и дошёл до перегрузок операторов, и с книги написал пример, и не могу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.