添加分数

时间:2014-04-13 03:48:19

标签: c++

我正在制作一个方法来添加任何类型的两个分数,即整数,激进等。这是我到目前为止所拥有的。如果两个分数的分子和分母都是整数,那么它很容易做到。但如果它是激进的或任何其他复杂的数字,我必须改变我的代码。所以我的问题是如何检查参数(分数的分子和分母)是整数还是激进或pi等? Number类是超类,Fraction类是子类。

string Fraction::add(Number n)
{
 Number newNumerator1 = n.denominator * numerator;
 Number newNumerator2 = denominator * n.numerator;
 Number newNum = newNumerator1 + newNumerator2;
 Number newDenominator = denominator * n.denominator;

 ostringstream a;
 a << newNum << "/" << newDenominator << endl;
 cout << a.str();
 return a.str();
}

2 个答案:

答案 0 :(得分:1)

您不应该添加Fraction n而不是Number n吗?由于您使用Number,因此对C ++编译器没有任何意义。

答案 1 :(得分:1)

假设您想要象征性地执行此操作(从而保留任何部首或其他符号),您需要重新编写代码以使其更像Mathematica或Maple,这将在纯粹的符号级别上操作分数。分子和分母不能是简单的数据类型,如intdouble。相反,您可能必须设计一个自定义模板,允许您定义复杂的数量,如下面的分子和分母:

(4 +√5i)÷(√3 - 3 ^√4)

这是一个非常复杂的系统,可能超出了你想要完成的范围。如果您只是想要评估传递分数的添加,那么强制参数为简单分数,或为不同参数创建重载函数。