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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2020, 20:12   #1
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
Вопрос Вызов приватной функции

C++
Вопрос. Как сделать функцию reduce приватной?(или она уже приватная?)И как ее вызывать?
Не нашел информации по этому вопросу.

Rarional.h
Цитата:
#ifndef RATIONAL_H
#define RATIONAL_H
#include <iostream>
#include <sstream>

class Rational {

private:
int Numerator{};
int Denominator{};

void reduce() {
int N = NOD(Numerator < 0 ? -Numerator : Numerator, Denominator);
Numerator /= N;
Denominator /= N;
}
int NOD(int a, int b) const {
while (a) {
int t = b % a;
b = a;
a = t;
}
return b;
}

public:
Rational() = default;
Rational(int Numerator, int Denominator);
Rational(const Rational& R);

void SetNumerator();
void SetDenominator();

int GetNumerator() const;
int GetDenominator() const;

friend Rational operator + (const Rational& a, const Rational& b);
friend Rational operator - (const Rational& a, const Rational& b);
friend Rational operator * (const Rational& a, const Rational& b);
friend Rational operator / (const Rational& a, const Rational& b);
friend bool operator > (const Rational& a, const Rational& b);
friend bool operator < (const Rational& a, const Rational& b);
friend bool operator == (const Rational& a, const Rational& b);
friend bool operator != (const Rational& a, const Rational& b);

friend std:stream& operator << (std:stream& out, const Rational&);
friend std::istream& operator >> (std::istream& in, Rational&);
};


#endif

Rational.cpp
Цитата:
#include <iostream>
#include "Rational.h"

Rational::Rational(int Numerator, int Denominator): Numerator(Numerator), Denominator(Denominator) {}
Rational::Rational(const Rational& R): Numerator{ R.Numerator }, Denominator{ R.Denominator } {}

void Rational::SetNumerator(){}
void Rational::SetDenominator(){}

int Rational::GetNumerator() const { return Numerator; }
int Rational::GetDenominator() const { return Denominator; }

Rational operator + (const Rational& a, const Rational& b) {
return Rational(a.GetNumerator() * b.GetDenominator() + b.GetNumerator() * a.GetDenominator(), a.GetDenominator() * b.GetDenominator());
}

Rational operator - (const Rational& a, const Rational& b) {
return Rational(a.GetNumerator() * b.GetDenominator() - b.GetNumerator() * a.GetDenominator(), a.GetDenominator() * b.GetDenominator());
}

Rational operator * (const Rational& a, const Rational& b) {
return Rational(a.GetNumerator() * b.GetNumerator(), a.GetDenominator() * b.GetDenominator());
}

Rational operator / (const Rational& a, const Rational& b) {
return Rational(a.GetNumerator() * b.GetDenominator(), a.GetDenominator() * b.GetNumerator());
}

bool operator > (const Rational& a, const Rational& b) { return (a.GetNumerator()/b.GetNumerator()) > (a.GetDenominator()/b.GetDenominator()); }

bool operator < (const Rational& a, const Rational& b) { return (a.GetNumerator() / b.GetNumerator()) < (a.GetDenominator() / b.GetDenominator()); }

bool operator == (const Rational& a, const Rational& b) { return (a.GetNumerator() == b.GetNumerator() && a.GetDenominator() == b.GetDenominator()); }

bool operator != (const Rational& a, const Rational& b) { return !(a == b); }

std:stream& operator << (std:stream& out, const Rational& R) {
out << "Numerator, Denominator: " << R.Numerator << ", " << R.Denominator;
return out;
};

std::istream& operator >> (std::istream& in, Rational& R) {
in >> R.Numerator >> R.Denominator;
return in;
};

Последний раз редактировалось Александр222; 01.10.2020 в 20:26.
Александр222 вне форума Ответить с цитированием
Старый 02.10.2020, 09:22   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Александр222, уже приватная
Цитата:
private:
в функциях класса вызов будет доступен, снаружи вызвать не получится

откуда вызывать то нужно ?
Алексей1153 вне форума Ответить с цитированием
Старый 02.10.2020, 12:13   #3
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
По умолчанию

Алексей1153, Задание звучит следующим образом (в частности в последней строке про reduce). Что конкретно подразумевалось, я так и не понял
Рациональная (несократимая) дробь представляется парой целых чисел (а, 6), где а — числитель, Ь — знаменатель. Создать класс Rational для работы с ра-циональными дробями. Обязательно должна быть реализованы операции:
• сложения add, (a, b) + (с, d) = (ad + be, bd)
• вычитания sub, (a, b) - (с, d) = (ad - be, bd)
• умножения mul, (a, b) x (c, d) = (ac, bd)
• деления div, (a>b) / (c, d) = (ad, be);
• сравнения equal, greate, less.
Должна быть реализована приватная функция сокращения дроби reduce, которая обязательно вызывается при арифметических операциях
Александр222 вне форума Ответить с цитированием
Старый 02.10.2020, 12:22   #4
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Александр222, ну так вот - функция reduce уже есть, она приватная. Вызывай её в конце операторов + , - , * , /
Алексей1153 вне форума Ответить с цитированием
Старый 02.10.2020, 12:32   #5
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
По умолчанию

Алексей1153, В этом и заключался вопрос) я написал - как ее можно вызвать?)
Александр222 вне форума Ответить с цитированием
Старый 02.10.2020, 13:18   #6
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Александр222, как-то так

Код:
Rational operator - (const Rational& a, const Rational& b)
{

   Rational r{a.GetNumerator() * b.GetDenominator() - b.GetNumerator() * a.GetDenominator(),
      a.GetDenominator() * b.GetDenominator()};

   r.reduce();

   return r;
}
Алексей1153 вне форума Ответить с цитированием
Старый 02.10.2020, 13:34   #7
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
По умолчанию

Алексей1153, Спасибо!
Александр222 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции С++ из Qml, Qt Anarchist_42 Qt и кроссплатформенное программирование С/С++ 2 13.10.2014 18:37
Вызов функции js из php Даниил_глазко PHP 2 15.02.2011 04:55
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Вызов функции new player БД в Delphi 5 07.10.2010 13:01
Вызов функции из dll-ки VVVadim Общие вопросы Delphi 2 28.04.2009 10:37