我正在制作一个方法来添加任何类型的两个分数,即整数,激进等。这是我到目前为止所拥有的。如果两个分数的分子和分母都是整数,那么它很容易做到。但如果它是激进的或任何其他复杂的数字,我必须改变我的代码。所以我的问题是如何检查参数(分数的分子和分母)是整数还是激进或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();
}
答案 0 :(得分:1)
您不应该添加Fraction n
而不是Number n
吗?由于您使用Number
,因此对C ++编译器没有任何意义。
答案 1 :(得分:1)
假设您想要象征性地执行此操作(从而保留任何部首或其他符号),您需要重新编写代码以使其更像Mathematica或Maple,这将在纯粹的符号级别上操作分数。分子和分母不能是简单的数据类型,如int
或double
。相反,您可能必须设计一个自定义模板,允许您定义复杂的数量,如下面的分子和分母:
(4 +√5i)÷(√3 - 3 ^√4)
这是一个非常复杂的系统,可能超出了你想要完成的范围。如果您只是想要评估传递分数的添加,那么强制参数为简单分数,或为不同参数创建重载函数。