簡體   English   中英

分數重載運算符+(使用lcm)

[英]Overloading operator + for fractions (using lcm)

我想使用分子和分母的lcm計算兩個分數的總和。 這意味着結果是我想得到簡化形式的分數。 我有以下cpp文件。

#include <iostream> //need it for cin and cout
#include "fraction.h"
Fraction::Fraction()
{
   num = 1;
   den = 1;
}

Fraction::Fraction(int n, int d)
{
   int tmp_gcd = gcd(n, d);

   num = n / tmp_gcd;
   den = d / tmp_gcd;
}

int Fraction::gcd(int a, int b)
{
   int tmp_gcd = 1;

// Implement GCD of two numbers;

   return tmp_gcd;
 }

 int Fraction::lcm(int a, int b)
 {
return a * b / gcd(a, b);

 }
 Fraction operator+(const Fraction&a,const Fraction &b)
 {
    int c=(lcm(b.den,a.den)/b.den)*a.num+b.num*(lcm(b.den,a.den)/a.den);
    int d=lcm(b.den,a.den);
    Fraction result(c,d);
    return result;
 }

但是,此代碼不起作用,因為在此范圍內未定義lcm。

使lcm在此范圍內工作的關鍵是什么? 如果您能解釋更多,我將非常感謝。

lcmFraction的成員。 您可以在Fraction成員中將其稱為lcm 但是operator+不是成員,因此您必須使用限定名稱Fraction::lcm

它還需要是static (希望它已經是,但是我無法確定該聲明)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM