インタビューでは、2つのクラスを作成するように求められました。最初の抽象クラスはNumberと呼ばれ、1つの操作 "+"をサポートします。 "抽象クラス"を実装するもう1つの部分。演算子のオーバーロードを使用して分数を追加
さらに:一度追加した分数は、元の形式で表示する必要があります。つまり、2/4は「1/2」や「0.5」ではなく「2/4」と表示されなければなりません。
いいえ他の詳細は私に提供されました。
以下は私が試したものです(不完全)。
私のmain.cppに
#include <iostream>
#include "Fraction.h"
using namespace std;
int main()
{
Fraction sumFraction;
Fraction n11(1,2);
Fraction n21(1,2);
cout << n11.getValuenum() << "/";
cout << n11.getValueden() << endl;
cout << n21.getValuenum() << "/";
cout << n21.getValueden() << endl;
sumFraction = n11 + n21;
cout << sumFraction.getValuenum() << endl;
cout << sumFraction.getValueden() << endl;
return 0;
}
マイNumbers.h //抽象クラス
#pragma once
template<class T>
class Number
{
virtual T& operator= (const T &) = 0; // first parameter is implicitly passed
virtual const T operator+ (const T &) = 0;
virtual void display() = 0;
};
マイFraction.cpp
#include "Fraction.h"
int Fraction::getValuenum()
{
return this->a1;
}
int Fraction::getValueden()
{
return this->a2;
}
Fraction::Fraction()
{
a1 = 0;
a2 = 0;
}
Fraction::Fraction(int num, int den)
{
a1 = num;
a2 = den;
}
void Fraction::display()
{
// will display the number in its original form
}
Fraction& Fraction::operator=(const Fraction &num)
{
a1 = num.a1;
a2 = num.a2;
return *this;
}
const Fraction Fraction::operator+(const Fraction &numberTwo)
{
Fraction n1;
n1.a1 = this->a1*numberTwo.a2 + this->a2*numberTwo.a1;
n1.a2 = this->a2*numberTwo.a2;
return n1;
}
マイFraction.h
#pragma once
#include "Number.h"
class Fraction : public Number<Fraction>
{
private:
int a1;
int a2;
public:
void display();
Fraction();
Fraction(int num, int den);
int getValuenum();
int getValueden();
Fraction& operator= (const Fraction &); // first parameter is implicitly passed
const Fraction operator+ (const Fraction &); // first parameter is implicitly passed
};
以下
は私の質問です:
は、私は本当に各分画のための私の主な機能とは別に分子と分母を渡す必要があります。現在、分数の点で結果を加算して返す際に役立つかもしれない分子と分母を追跡するために、別にそれを渡しています。
私の演算子+ロジックでは、1/4 + 1/4を追加すると8/16が得られます。通常追加すると2/4になると思います。だから、分子と分母を使って追加する方法とそのような方法で分数を保持するので、出力が2/4、2/4であり、1/2または0.5でない場合
私を助けてください。
[Khan Academy](https://www.khanacademy.org/math/pre-algebra/fractions-pre-alg/fractions-unlike-denom-pre-alg/v/adding-fractions -with-like-denominators)は、追加ロジックを助けることができます。 – Kupiakos
抽象テンプレートクラス 'Number'は全く役に立たないと私は考えています。デザインを考え直す。 –
分母に加えられる分数が同じ分母であれば分母に何もしないで、分子を追加するだけでいいと思います。そうすれば_1/4 + 1/4_は_2/4_になります。 – Logicrat