Мультипликативная обратная рационального числа

0

Ниже - заглушка, обратная функция возвращает мультипликативный обратный рациональный номер.

#include <iostream>
using namespace std;

unsigned inverse(unsigned&, unsigned&);

int main()
{
    unsigned p, q;

    cout << "Enter a rational number ==> ";
    cin >> p >> q;
    inverse(p, q);
    cout << p << ":" << q << endl;

    return 0;
}

unsigned inverse(unsigned& p, unsigned& q) 
// returns the multiplicative inverse
{
   unsigned swap;
   swap = p;
   p = q;
   q = swap;

   return p;
}

Я пытаюсь включить обратную функцию в большую программу, и мне трудно это сделать. Заголовок функции должен быть Rational inverse() const; Это функция-член в классе Rational. _p и _q объявляются в классе. Функция const, поэтому я не могу изменить значения _p и _q. Любая помощь могла бы быть полезна!

  • 1
    Предполагая, что у вас есть конструктор Rational(unsigned p, unsigned q) , функция- член inverse() будет выглядеть примерно так: Rational inverse() const { return Rational(_q, _p); }
  • 0
    О да, я благодарю вас за указание на это.
Теги:

1 ответ

0

Вы захотите, чтобы тело Rational inverse() const включило несколько вещей, если я правильно понимаю ваш вопрос. Сначала создайте новый Rational, который имеет привилегию модификации. Затем установите это Rational как обратное и верните его из функции.

Rational inverse() const {
   Rational temp; // creates Rational you can modify
    //..appropriate operations on temp to ....
    //..set temp._p and temp._q to be the inverse...
   return temp; 
}

Не забудьте собрать рациональное из вызова функции следующим образом:

int main(){
   Rational a;
   Rational inverseOfa = a.inverse();
   return 0;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню