编写有理数加法的程序,可以采用以下步骤:
输入处理
读取两个有理数,每个有理数由分子和分母组成,格式为 `a1/b1 a2/b2`。
将输入的字符串解析为分子和分母的整数值。
加法运算
根据有理数加法的法则,确定结果的符号和绝对值。
若两个数同号,则将它们的绝对值相加,并取相同的符号。
若两个数异号,则取绝对值较大的数的符号,并用较大的绝对值减去较小的绝对值。
若其中一个数为0,则结果仍为该数。
结果化简
将结果化为最简分数形式。若分母为1,则只输出分子。
输出结果
按照 `a/b` 的格式输出结果。
```cpp
include include include include class Rational { public: int numerator; int denominator; Rational(int num, int denom) : numerator(num), denominator(denom) { simplify(); } void simplify() { int gcd = std::gcd(numerator, denominator); numerator /= gcd; denominator /= gcd; if (denominator < 0) { numerator = -numerator; denominator = -denominator; } } Rational operator+(const Rational& other) const { int num = numerator * other.denominator + other.numerator * denominator; int denom = denominator * other.denominator; return Rational(num, denom); } friend std::ostream& operator<<(std::ostream& os, const Rational& r) { os << r.numerator << "/" << r.denominator; return os; } }; int main() { std::string input; std::getline(std::cin, input); std::istringstream iss(input); int a1, b1, a2, b2; char slash; iss >> a1 >> slash >> b1 >> slash >> a2 >> slash >> b2; Rational r1(a1, b1); Rational r2(a2, b2); Rational sum = r1 + r2; std::cout << sum << std::endl; return 0; } ``` 代码解释: 包含分子和分母,并提供简化方法。 重载了加法运算符 `+`,以便可以直接使用 `+` 运算符进行加法操作。 从标准输入读取一行字符串,解析为两个有理数。 创建 `Rational` 对象并计算它们的和。 输出结果。 这个程序可以处理两个有理数的加法,并输出最简分数形式的结果。Rational类
main函数