Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2023, 01:45   #1
Alex_andr
Пользователь
 
Регистрация: 08.12.2022
Сообщений: 23
По умолчанию перегрузкa операторов класса дробь в c++

Добрый день! нужна помощь с перегрузкой операторов класса дробь в c++. Не получается сделать перегрузку функций сокращения дроби
(fraction sokr(fraction arg)
{
fraction temp;
int div;
div = NOD(num,denum);
temp.num = (this -> num / div);
temp.denum = (this-> denum / div);
return temp;
})
перевода обычной дроби в десятичную
( double convertingTOdecimal(fraction arg)
{
return (double)num/denum;
})
и вычитание целого числа из дроби
Alex_andr вне форума Ответить с цитированием
Старый 07.03.2023, 10:36   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Тэги кода и форматирование сделайте сначала. Читаем справку в Интернете.
Cuprum5 вне форума Ответить с цитированием
Старый 07.03.2023, 11:11   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Нужно про классы почитать. Операторы пишутся внутри класса. Можно и снаружи объявить(friend), но еще рано, надо думать.
Cuprum5 вне форума Ответить с цитированием
Старый 08.03.2023, 15:37   #4
Lapita12
Новичок
Джуниор
 
Регистрация: 08.03.2023
Сообщений: 24
По умолчанию

Код:
#include <iostream>
class fraction {
private:
    int num;
    int denum;
public:
    fraction(int n, int d) : num(n), denum(d) {}

    friend fraction reduce(fraction arg) {
        fraction temp;
        int div;
        div = NOD(arg.num, arg.denum);
        temp.num = (arg.num / div);
        temp.denum = (arg.denum / div);
        return temp;
    }
    
    operator double() {
        return (double)num/denum;
    }
    
    fraction operator-(int n) {
        return fraction(num - n*denum, denum);
    }
    
    void print() {
        std::cout << num << "/" << denum << std::endl;
    }
};

int NOD(int a, int b) {
    while (a % b != 0) {
        int t = a % b;
        a = b;
        b = t;
    }
    return b;
}

int main() {
    fraction f1(6, 8);
    fraction f2 = reduce(f1);
    f2.print();
    std::cout << (double)f1 << std::endl;
    fraction f3 = f1 - 1;
    f3.print();
    return 0;
}
Lapita12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение операторов, создание собственного класса String БалаШагаЛ Общие вопросы C/C++ 3 04.04.2013 11:00
рациональную дробь перевести в цепную дробь. на Паскале. (проверьте программку, где то ошибка:( ) masal86 Помощь студентам 1 20.02.2013 12:42
Перегрузка операторов для класса revizor Помощь студентам 1 20.01.2013 17:21
Перегрузка бинарных арифметических операторов шаблона класса NecroArt Помощь студентам 2 10.08.2010 21:31
Функции операторов для класса Superlotles Общие вопросы C/C++ 6 07.06.2010 01:50